编辑
2024-08-20
undefined
00

目录

排序+双指针

排序+双指针

js
/** * @param {number[]} nums * @return {number[][]} */ var threeSum = function (nums) { nums.sort((a, b) => a - b) const ans = [] const n = nums.length for (let i = 0; i < n - 2; i++) { // 当前元素不等于上一个元素 if (i > 0 && nums[i] == nums[i - 1]) continue // 优化 if (nums[i] + nums[i + 1] + nums[i + 2] > 0) break if (nums[i] + nums[n - 1] + nums[n - 2] < 0) continue let j = i + 1 let k = n - 1 while (j < k) { const sum = nums[i] + nums[j] + nums[k] if (sum > 0) { k-- } else if (sum < 0) { j++ } else { ans.push([nums[i], nums[j], nums[k]]) j++ while (j < k && nums[j] === nums[j - 1]) { j++ } k-- while (j < k && nums[k] === nums[k + 1]) { k-- } } } } return ans }

本文作者:任浪漫

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明出处!