三数之和
给你一个整数数组 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
nums.sort((x, y) => x - y)
if (len < 3 || nums[0] > 0) return res
for (let i = 0; i < len; i++) {
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
}
以自己现在的努力程度,还没有资格和别人拼天赋

浙公网安备 33010602011771号