Leetcode--3Sum

来源:互联网 发布:淘宝有卖二手丝袜吗 编辑:程序博客网 时间:2024/06/09 06:48

这个题目的思路有以下几种:

1. 类似2Sum时使用的unordered_map的方法,先选定两个数,然后利用0-num1-num2的方法去查找第三个数;缺点:重复的数字会导致重复的数字组合,拟解决方案是使用unique和set的方法让最后的结果不重复,或者让nums不重复。

set 使用说明 http://www.cplusplus.com/reference/set/set/ 

unique使用说明 http://www.cplusplus.com/reference/algorithm/unique/

注:发现unique需要先排序再排重,对于<vector<vector<int>>>无效。

这个方法需要两次for循环不易通过大量数据,且去重方法与下面的一致,就不详述了。

2.类似Container with most water使用前后两个索引,遍历到中间找到合适解。首先通过k确定两个数总和two_sum,然后使用i,j分别从前、后遍历数据,如果和大于two_sum,则j--,小于,i++,否则添加符合条件的值。

注:需要把相同的sums[k] sums[i] sums[j]排重,可使用while语句,也可以使用set。

使用set的方法见http://articles.leetcode.com/finding-all-unique-triplets-that-sums 

给出我自己使用while的代码



0 0
原创粉丝点击