双指针查找 使用双指针法查找剩余两个元素,使得三者之和为 0。 left 指向当前元素右侧的第一个元素。 right 指向数组末尾。 通过调整 left 和 right 的位置,找到满足条件的三元组。
判断三数之和 如果 sum === 0,找到一个符合条件的三元组,将其加入结果数组。 为了避免重复结果,跳过相同的 left 和 right 值。 然后移动 left 和 right 指针,继续查找。 如果 sum < 0,说明当前和太小,需要增大 left 指针。 如果 sum > 0,说明当前和太大,需要减小 right 指针。
functionthreeSum(nums){nums.sort((a, b)=> a - b);const result =[];for(let i =0; i < nums.length -2; i++){if(i >0&& nums[i]=== nums[i -1])continue;let left = i +1, right = nums.length -1;while(left < right){const sum = nums[i]+ nums[left]+ nums[right];if(sum ===0){result.push([nums[i], nums[left], nums[right]]);while(nums[left]=== nums[left +1]) left++;while(nums[right]=== nums[right -1]) right--;left++;right--;}elseif(sum <0) left++;else right--;}}return result;}