leetcode15 - 3sum
3sum跟之前的2sum有点像,但难度更大一些
题目描述 :
1 | Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero. |
范围0 <= nums.length <= 3000
方法1:
枚举所有方法,时间复杂度n^3,会超时
方法2:
排序
哈希法(2等1)
循环i,j 此时 t=0-nums[i]-nums[j]
根据哈希,判断t是否在数组中出现过
注意:需要去重
方法3:
排序
双指针(1等2)
t=0-nums[i]-nums[j]
思路:
固定i指针,j,k分别在两端,交替向中间靠拢(比较t)
注意:去重
代码
1 | class Solution: |
小结
此题题目简单,但是需要考虑的东西也比较细.
- 去重
- hash及set的使用
- 双指针
- 剪枝
- 对首位的特殊判断
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 h4m5t's Blog!