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

leetcode 16 3Sum

时间:2018-08-29 21:26:14      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:std   --   return   style   sum   span   while   for   push   

 

 

class Solution {
public:
    vector<vector<int>> threeSum(vector<int>& nums) {
        vector<vector<int>> result;
        std::sort(nums.begin(),nums.end());
        for(int i = 0;i < nums.size();i++){
            int target = 0 - nums[i];
            int first = i+1;
            int end = nums.size() - 1;
            while(first < end){
                if(nums[first] + nums[end] == target){
                    vector<int> res;
                    int num1 = nums[first];
                    int num2 = nums[end];
                    res.push_back(nums[i]);
                    res.push_back(num1);
                    res.push_back(num2);
                    result.push_back(res);
                    while(first < end && nums[first] == num1)
                        first++;                    相同的数字过滤掉
                    while(first < end && nums[end] == num2)
                        end--;                     相同的数字过滤掉
                }
                else if(nums[first] + nums[end] < target)
                    first++;
                else
                    end--;
            }
            while (i + 1 < nums.size() && nums[i + 1] == nums[i]) 
                i++;                            相同的数字过滤掉
        }
        return result;
    }
};

 

leetcode 16 3Sum

标签:std   --   return   style   sum   span   while   for   push   

原文地址:https://www.cnblogs.com/ymjyqsx/p/9556628.html

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