Leetcode--3Sum

來源:互聯網
上載者:User

標籤:des   style   blog   color   os   2014   

Problem Description:

Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.

Note:

  • Elements in a triplet (a,b,c) must be in non-descending order. (ie, a ≤ b ≤ c)
  • The solution set must not contain duplicate triplets.

    For example, given array S = {-1 0 1 2 -1 -4},    A solution set is:    (-1, 0, 1)    (-1, -1, 2)
分析:題目要求把所有可能的集合都找出來,因此想到的就是首先將數組排序,然後利用兩重迴圈依次選出兩個數字a和b,然後在剩下的數字中尋找是否存在c,具體實現用到了upper_bound函數找到比當前數大的第一個數,去掉重複迴圈的情況,然後用find函數尋找c是否存在,存在則將三個數記錄下來。具體代碼如下:

class Solution {public:    vector<vector<int> > threeSum(vector<int> &num) {        vector<vector<int> > results;        if(num.size()<3) return results;        vector<int> subset;        sort(num.begin(),num.end());        vector<int>::iterator p=num.begin(),q,flag;        while(p<(num.end()-2))        {            q=p+1;            while(q<num.end()-1)            {                int tag=0-*p-*q;                if(find(q+1,num.end(),tag)!=num.end())                {                flag=find(q+1,num.end(),tag);                subset.push_back(*p);                subset.push_back(*q);                subset.push_back(*flag);                results.push_back(subset);                }                subset.clear();                q=upper_bound(q,num.end()-1,*q);            }            p=upper_bound(p,num.end()-2,*p);        }        return results;    }};


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.