首页 > 其他分享 >三数之和

三数之和

时间:2023-02-06 12:22:05浏览次数:35  
标签:const nums ++ 三数 len 三元组 res

给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请

你返回所有和为 0 且不重复的三元组。

注意:答案中不可以包含重复的三元组。

const threeSum = (nums = [-1, 0, 1, 2, -1, -4]) => {
    const res = []
    const len = nums.length
    if (len < 3) return res
    nums.sort((x, y) => x - y)
    for (let i = 0; i < len; i++) {
        if (nums[0] > 0) break
        if (i > 0 && nums[i] === nums[i - 1]) continue
        let l = i + 1,
            r = len - 1
        while (l < r) {
            let sum = nums[i] + nums[l] + nums[r]
            if (sum > 0) {
                r--
            } else if (sum < 0) {
                l++
            } else {
                res.push([nums[i], nums[l], nums[r]])
                while (l < r && nums[l] === nums[l + 1]) l++
                while (l < r && nums[r] === nums[r - 1]) r--
                l++
                r--
            }
        }
    }
    return res
}

  

标签:const,nums,++,三数,len,三元组,res
From: https://www.cnblogs.com/zhenjianyu/p/17095004.html

相关文章