首页 > 其他 > 详细

3sum

时间:2016-03-07 12:00:01      阅读:218      评论:0      收藏:0      [点我收藏+]

#include <string>
#include <stack>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
vector<vector<int>> threeSum(vector<int>& nums) {
    sort(nums.begin(), nums.end());
    int len = nums.size();
    vector<vector<int>> res;
    for (int i = 0; i < len; i++) {
        int sum = 0 - nums[i];
        int low = i + 1;
        int high = len - 1;
        while (low < high) {
            if (sum > nums[low] + nums[high]) low++;
            else if (sum < nums[low] + nums[high]) high--;
            else {
                vector<int> temp = { nums[i],nums[low],nums[high] };
                res.push_back(temp);
                while (low < high &&nums[low] == temp[1]) low++;
                while (low < high && nums[high] == temp[2]) high--;
            }
        }
        while ((i + 1 < len) && nums[i] == nums[i + 1]) i++;
    }
    return res;
}

int main() {
    vector<int> nums = {-1,-1,0,1 };
    vector<vector<int>> re=threeSum(nums);
}

3sum

原文:http://www.cnblogs.com/hustlx/p/5249621.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!