给你一个整数数组 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