力扣,四数之和,js解法

48 阅读1分钟

源码:

var fourSum = function(nums, target) {
    if(nums.length<4) return []
    let arr = []
    let temp = []
    nums = nums.sort((a,b)=>a-b)
    for(let i=0;i<nums.length-3;i++){
        if(i>0&&nums[i]===nums[i-1]) continue
        for(let j=nums.length-1;j>2;j--){
            if(j<nums.length-1&&nums[j]===nums[j+1]) continue
            let left=i+1;right=j-1
            while(left<right){
                if(nums[i]+nums[left]+nums[right]+nums[j]===target){
                    if(nums[left]===nums[left+1]&&right>left+1){
                        left++
                        continue
                    }
                    if(nums[right]===nums[right-1]&&right>left+1){
                        right--
                        continue
                    }
                    temp=[nums[i],nums[left],nums[right],nums[j]]
                    arr.push(temp)
                    temp=[]
                    left++
                }else if(nums[i]+nums[left]+nums[right]+nums[j]<target){
                    left++
                } else if(nums[i]+nums[left]+nums[right]+nums[j]>target){
                    right--
                }
            }
        }
    }
    return arr
};

结果:

image.png

image.png