码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode_15_3Sum

时间:2015-06-21 13:13:27      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:c++   leetcode   array   

欢迎大家阅读参考,如有错误或疑问请留言纠正,谢谢技术分享

3Sum

 

Given an array S of n integers, are there elements abc 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)

分析:
先排序,然后左右夹逼,注意跳过重复的数,时间复杂度O(n^2)

//方法:先排序,然后左右夹逼,注意跳过重复的数,时间复杂度O(n^2)
class Solution {
public:
    vector<vector<int>> threeSum(vector<int>& nums) {
        vector<vector<int> > result;
        if(nums.size() < 3)
            return result;
        sort(nums.begin(), nums.end());
        for(vector<int>::iterator i = nums.begin(); i < nums.end() - 2; i++)
        {
            if(i > nums.begin() && *i == *(i-1))
                continue;
            vector<int>::iterator j = i + 1;
            vector<int>::iterator k = nums.end() - 1;
            while(j < k)
            {
                if(*i + *j + *k < 0)
                {
                    j++;
                    while(*j == *(j-1) && j < k)
                        j++;
                }
                else if(*i + *j + *k > 0)
                {
                    k--;
                    while(*k == *(k+1) && j < k)
                        k--;
                }
                else
                {
                    result.push_back({*i, *j, *k});
                    j++;
                    k--;
                    while(*j == *(j-1) && *k == *(k+1) && j < k)
                        j++;
                }
            }
        }
        return result;
    }
};





leetcode_15_3Sum

标签:c++   leetcode   array   

原文地址:http://blog.csdn.net/keyyuanxin/article/details/46581091

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!