[LeetCode] 15. 3Sum - c++

mopevxw·2022년 1월 19일
0

LeetCode

목록 보기
6/21

c++풀이

class Solution {
public:
    vector<vector<int>> threeSum(vector<int>& nums) {
        vector<vector<int>> res;
        int n=nums.size();
        sort(nums.begin(),nums.end());
        
        for(size_t i=0;i<nums.size();++i)
        {
            if(i>0 && nums[i]==nums[i-1]) continue;
            size_t lo=i+1;
            size_t hi=n-1;
            int tar=nums[i]*-1;
            while(lo<hi)
            {
                int sum=nums[lo]+nums[hi];
                if(sum<tar) ++lo;
                else if(sum>tar) 
                {
                    --hi;
                }
                else
                {
                    res.push_back(vector<int> {nums[i],nums[lo],nums[hi]});
                    lo++;
                    while(lo<hi && nums[lo]==nums[lo-1]) ++lo;
                }
            }
        }
        return res;
    
    }
};

0개의 댓글