Leetcode

LeetCode #15 三数之和

2020-02-09  本文已影响0人  HU兔兔
class Solution {
public:
    vector<vector<int>> threeSum(vector<int>& nums) {
        sort(nums.begin(),nums.end());
        int n,i,j,sum;
        n=0;
        vector<vector<int>> ans;
        if(nums.size()<3){
            return ans;
        }         
        while(n<nums.size()-2){
            if(nums[n]>0){
                break;
            }
            i=n+1;
            j=nums.size()-1;
            while(i<j){
                sum=nums[n]+nums[i]+nums[j];
                if(sum==0){
                    ans.push_back({nums[n],nums[i],nums[j]});
                    i++;
                    while(nums[i-1]==nums[i]&&i<j){
                        i++;
                    }
                    j--;
                    while(nums[j+1]==nums[j]&&i<j){
                        j--;
                    }
                }
                else{
                    sum>0?j--:i++;
                    }
            }
            n++;
            while(nums[n-1]==nums[n]&&n<nums.size()-2){
                n++;
            }
        }
        return ans;
    }
};

本来想用哈希做的结果发现实现起来太麻烦了

上一篇下一篇

猜你喜欢

热点阅读