LintCode 57-三数之和

分析

注意hash去重

class Solution {
public:    
    /**
     * @param numbers : Give an array numbers of n integer
     * @return : Find all unique triplets in the array which gives the sum of zero.
     */
    vector<vector<int> > threeSum(vector<int> &nums) {
        // write your code here
        vector<vector<int>> ret;
        unordered_set<long long> d;
        for (int i = 0; i < nums.size() - 2; ++i) {
            int sum = -nums[i];
            unordered_set<int> s;
            for (int j = i + 1; j < nums.size(); ++j) {
                if (s.find(nums[j]) != s.end()) {
                    vector<int> ans;
                    ans.push_back(nums[i]);
                    ans.push_back(nums[j]);
                    ans.push_back(-(nums[i] + nums[j]));
                    sort(ans.begin(), ans.end());
                    long long t = 33 * 33 * ans[0] + 33 * ans[1] + ans[2];
                    if (d.find(t) == d.end()) {
                        ret.push_back(ans);
                        d.insert(t);
                    }
                } else {
                    s.insert(sum - nums[j]);
                }
            }
        }
        return ret;
    }
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一章 Nginx简介 Nginx是什么 没有听过Nginx?那么一定听过它的“同行”Apache吧!Ngi...
    JokerW阅读 32,799评论 24 1,002
  • 教你如何迅速秒杀掉:99%的海量数据处理面试题 本文经过大量细致的优化后,收录于我的新书《编程之法》第六章中,新书...
    Helen_Cat阅读 7,455评论 1 39
  • 关于卢安克。 我愿意把安得故事筑成一杯温水,置放在心里,看得清自己,还带着温度。 安起初给我得最大感觉是自由,不着...
    雨过天晴L阅读 436评论 0 0
  • 昨天妈来电话说想我孩子了,这个周末有空就带回乡下走走,屋后的枇杷可以摘了。因为单位事多,已有二个月没回农村老家,这...
    梨花曾开阅读 158评论 0 0
  • 15年的4月份来到广州,那是我第一次到广州。走出火车站的出站口,映入眼帘的也并非全是高楼大厦。步行两百米钻入地铁站...
    定云止水_0cc5阅读 124评论 0 0