牛骨文教育服务平台(让学习变的简单)
博文笔记

[LeetCode] Three Sum

创建时间:2015-07-11 投稿人: 浏览次数:639

注意Two sum的思路是使用hashmap

class Solution {
public:
    vector<vector<int>> threeSum(vector<int>& nums) {
        sort(nums.begin(),nums.end());
        vector<vector<int>> vv;
        int n = nums.size();
        for(int i = 0; i<n; ++i){
            int front = i+1;
            int rear = n-1;
            while(front<rear){
                int sum = nums[i]+nums[front]+nums[rear];
                vector<int> v3(3);
                if(sum>0)
                    --rear;
                else if(sum<0)
                    ++front;
                else{
                    v3[0]=nums[i];
                    v3[1]=nums[front];
                    v3[2]=nums[rear];
                    vv.push_back(v3);
                    while(front<rear&&nums[front]==v3[1])  ++front;
                    while(front<rear&&nums[rear]==v3[2]) --rear;
                }
            }
            while(i<n-1&&nums[i]==nums[i+1])    ++i;
        }
        return vv;

    }
};
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。