Sum:Two sum+3Sum+3Sum closest+4S

2018-12-24  本文已影响0人  雨宝_f737

Two sum:

对于每个数,寻找这个数之前是否有和自己配对的数。在循环的时候同时记录已经访问过的数,以便后面的数进行查找。

对于只有查找操作的数据结构,最好的当然是哈希,STL中unordered_map使用的是哈希实现查找复杂度是O(1),map是使用的平衡二叉树所以是O(log(n))复杂度。

3Sum:

转换为2Sum问题,复杂度为O(n * n),如果使用上述2Sum解的话,还需要一个额外的unordered_map存数据。

由于复杂度大于排序的复杂度,可以先排个序,同时排序的话孩能处理数字重复的问题。

使用双指针获取两个数相加为target,遇到target后注意要判断相等的数,与当前两个数相等的数的配对情况都是重复的,可忽略。

3Sum Closest:

同3Sum,只需在内部判断三个数的和与target的距离,距离近则记录,距离为0跳出循环。

4Sum:

3Sum外面套一层。

上一篇下一篇

猜你喜欢

热点阅读