LeetCode - 三数之和题解
题目描述
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c,使得 a + b + c = 0。请找出所有满足条件且不重复的三元组。
解题思路
双指针法
1 | var threeSum = function(nums) { |
代码分析
- 先对数组排序,便于去重和移动指针
- 固定第一个数,使用双指针查找另外两个数
- 注意跳过重复值,避免重复结果
- 根据三数之和与0的关系移动指针
优化思路
提前判断特殊情况:
- 数组长度小于3
- 最小三数之和大于0
- 最大三数之和小于0
剪枝优化:
- 当 nums[i] > 0 时可以直接结束
- 当 nums[i] + nums[i+1] + nums[i+2] > 0 时可以结束
复杂度分析
- 时间复杂度: O(n²)
- 空间复杂度: O(1)
参考资料
https://johnsmithsren.github.io/renjmBlog.github.io/2020/07/01/%E4%B8%89%E6%95%B0%E4%B9%8B%E5%92%8C/
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 !


