2-sum
从左往右扫描一遍,然后将数及对应坐标,存到map中。然后再扫描一遍即可,时间复杂度O(n)
需要注意的是,对于含重复元素的序列,比如 numbers={ 2,2,5,6 },target = 4 的情况,可能大家会想 mapping 里面的 < 2, 1 > 会将< 2, 0 > 覆盖掉,这样是不是就不行了? 其实覆盖也没有关系,后面扫描时用的是第一个2,hash 获得的元素位置是第二个 2。
将数组排序,然后双指针从前后往中间扫描,时间复杂度O(n*logn)
3-sum
解题思路:先排序,固定一个数,转化为 2-sum,利用双指针左右夹逼
3-Sum Closest
与 3-Sum 解法类似,但不用考虑去重了。