1. two sum问题
给定一组序列:[-4 -6 5 1 2 3 -1 7],然后找出其中和为target的一对数
简单做法:两层循环遍历,时间复杂度为n^2
升级版:对给定的序列建立一个hash表,然后只需要外层一层循环就可以了,时间复杂度为n
2. three sum问题
给定一组序列:[-4 -6 5 1 2 3 -1 7],然后找出其中和为target的三个数
简单做法:三层for循环,时间复杂度为n^3
升级版:
如果看做是two sum升级,可以先从小到大排序,时间复杂度nlogn,然后固定一个数,前面的子列使用two sum的方法,
时间复杂度为n^2;
也可以先排序,使用两层for循环,遍历子列,获取前两个数,然后对后面的hash过的子列找出另一个,时间复杂度为n^2;
3. four sum问题
可以类比three sum问题,时间复杂度可达到n^3
上述问题我就只能想到这种解法了,但是我感觉对时间复杂度还是不满意