Skip to content

Commit

Permalink
Merge pull request #860 from KillMonger1/4sumcpp
Browse files Browse the repository at this point in the history
18 | 4Sum | Medium CPP
  • Loading branch information
noisefilter19 authored Sep 30, 2021
2 parents 4273f8e + 80072ef commit b7c544b
Showing 1 changed file with 42 additions and 0 deletions.
42 changes: 42 additions & 0 deletions C++/4Sum.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
// https://leetcode.com/problems/4sum/
class Solution {
public:
vector<vector<int>> fourSum(vector<int>& nums, int target) {
sort(nums.begin(),nums.end());
int i=0;
vector<vector<int>> res;
while(i<nums.size()){
int a1=nums[i];
int j=i+1;
while(j<nums.size()){
int a2=nums[j];
int tgt=target-a1-a2;
int front=j+1;
int back=nums.size()-1;
while(front<back){
int sm=nums[front]+nums[back];
if(sm>tgt){
back--;
}else if(sm<tgt){
front++;
}else{
int f=nums[front];
int b=nums[back];
res.push_back({a1,a2,f,b});
while(front<back && nums[front]==f)
front++;
while(front<back && nums[back]==b)
back--;
}
}
while(j+1<nums.size()&&nums[j]==nums[j+1])
j++;
j++;
}
while(i+1<nums.size()&&nums[i]==nums[i+1])
i++;
i++;
}
return res;
}
};

0 comments on commit b7c544b

Please sign in to comment.