Shu-How Zの小窝

Loading...

15. 三数之和

/**
 * @param {number[]} nums
 * @return {number[][]}
 */
var threeSum = function(nums) {
    let res=[]
    let len=nums.length
    nums=nums.sort((a,b)=>a-b)

    for(let i=0;i<len-2;i++){
        let j=i+1
        let k=len-1

        if(i>0&&nums[i]==nums[i-1]){
            continue
        }

        while(j<k){
            if(nums[i]+nums[j]+nums[k]>0){
                k--
                while(nums[k]==nums[k+1]&&j<k){
                    k--
                }
            }else if(nums[i]+nums[j]+nums[k]<0){
                j++
                while(nums[j]==nums[j-1]&&j<k){
                    j++
                }
            }else{
                res.push([nums[i],nums[j],nums[k]])
                j++
                k--
                while(nums[k]==nums[k+1]&&j<k){
                    k--
                }
                while(nums[j]==nums[j-1]&&j<k){
                    j++
                }
            }
        }
    }
    return res
};
posted @ 2026-08-10 13:18  KooTeam  阅读(4)  评论(0)    收藏  举报