two sum, three sum和four sum问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了two sum, three sum和four sum问题相关的知识,希望对你有一定的参考价值。

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

 

上述问题我就只能想到这种解法了,但是我感觉对时间复杂度还是不满意

以上是关于two sum, three sum和four sum问题的主要内容,如果未能解决你的问题,请参考以下文章

PAT 甲级 A1005 (2019/02/10)

python_数据类型——

比较列表中的所有元素

Three sum

把字符串离散化

leetCode 1. Two Sum