1.两数之和问题
描述:在一个数列中找出两个数使他们的和等于给定的值target。
除暴力外的一般思路:
1.哈希表法。遍历数列,对每个元素a[i]判定target-a[i]是否在哈希表中。O(n)
2.双指针法。要先将该数列排序。O(n)
拓展:
三数之和
求a[i]+a[j]+a[k]==target。一般来说,外层循环定住a[i],内层循环找两数和为target-a[i]。转化为两数之和问题。求a[j]+a[k]可哈希或双指针。O(n^2)
最接近的三数之和
leetcode[16],双指针。
四数之和
外层再加一个循环定住a[i],求a[j]+a[k]+a[l]==target-a[i],转化为三数之和问题。