var isUnivalTree = function(root) {
if(!root)return true
if(root.left){
if(root.left.val!==root.val || !isUnivalTree(root.left)){
return false
}
}
if(root.right){
if(root.right.val!==root.val || !isUnivalTree(root.right)){
return false
}
}
return true
};
var maxProduct = function(words) {
let res=0
for(let i=0
for(let j=i+1
if(!hasSameLetter(words[i],words[j])){
res=Math.max(res,words[i].length*words[j].length)
}
}
}
return res
}
const hasSameLetter=(w1,w2)=>{
for(let i of w1){
if(w2.indexOf(i)!==-1){
return true
}
}
return false
}
var twoSum = function(numbers, target) {
let i=0,j=numbers.length-1
let res=[]
while(i!==j){
if(numbers[i]+numbers[j]>target){
j--
}
else if(numbers[i]+numbers[j]<target){
i++
}
else{
res.push(i)
res.push(j)
break
}
}
return res
};
var threeSum = function(nums) {
let res=[]
nums.sort((a,b)=>a-b)
if(nums.length<3)return []
for(let i=0;i<nums.length-2;i++){
if(i>0 && nums[i]===nums[i-1])continue
let target=-nums[i]
let l=i+1,r=nums.length-1
while(l<r){
if(nums[l]+nums[r]===target){
res.push([-target,nums[l],nums[r]])
while(l<r){
l++
if(nums[l]!==nums[l-1])break
}
while(l<r){
r--
if(nums[r]!==nums[r+1])break
}
}else if(nums[l]+nums[r]<target){
l++
}else{
r--
}
}
}
return res
};
var minSubArrayLen = function(target, nums) {
let l=0
let sum=0
let res=1000000
//滑动窗口,在可行解里找最优解
for(let r=0
sum+=nums[r]
while(l<=r && sum>=target){
res=Math.min(res,r-l+1)
sum-=nums[l]
l++
}
}
return res===1000000?0:res
}
var numSubarrayProductLessThanK = function(nums, k) {
let res=0,l=0,r=0,ans=1
while(r<nums.length){
ans*=nums[r]
while(ans>=k && l<=r){
ans/=nums[l]
l++
}
res+=r-l+1
r++
}
return res
};
var subarraySum = function(nums, k) {
const mp = new Map()
mp.set(0, 1)
let count = 0, pre = 0
for (const x of nums) {
pre += x
if (mp.has(pre - k)) {
count += mp.get(pre - k)
}
if (mp.has(pre)) {
mp.set(pre, mp.get(pre) + 1)
} else {
mp.set(pre, 1)
}
}
return count
}