28. 4Sum
Input: nums = [1,0,-1,0,-2,2], target = 0
Output: [[-2,-1,1,2],[-2,0,0,2],[-1,0,0,1]]Input: nums = [], target = 0
Output: []Solution: (Using Sorting and 3SUM)
class Solution
{
public:
vector<vector<int>> fourSum(vector<int> &nums, int target)
{
sort(nums.begin(), nums.end());
vector<vector<int>> res;
int i = 0;
while (i < nums.size())
{
int a1 = nums[i];
int j = i + 1;
while (j < nums.size())
{
int a2 = nums[j];
int t = a1 + a2;
int start = j + 1;
int end = nums.size() - 1;
while (start < end)
{
if (nums[start] + nums[end] + t == target)
{
int t1 = nums[start];
int t2 = nums[end];
vector<int> v;
v.push_back(a1);
v.push_back(a2);
v.push_back(nums[start]);
v.push_back(nums[end]);
res.push_back(v);
while (start < nums.size() && nums[start] == t1)
{
start++;
}
while (end >= 0 && nums[end] == t2)
{
end--;
}
}
else if (nums[start] + nums[end] + t > target)
{
end--;
}
else
{
start++;
}
}
while (j < nums.size() && nums[j] == a2)
{
j++;
}
}
while (i < nums.size() && nums[i] == a1)
{
i++;
}
}
return res;
}
};4Sum II
Solution: (2 Sum)
Last updated