class Solution {
public:
vector<vector<int>> fourSum(vector<int>& nums, int target) {
int i,j,left,right;
int temporaryt;
int n=nums.size();
vector<vector<int>> ret;
vector<int> temp;
sort(nums.begin(),nums.end());
for(i=0;i<n-3;i++)
{
for(j=i+1;j<n-2;j++)
{
temporaryt=target-nums[i]-nums[j];
left=j+1;
right=n-1;
while(left<right)
{
if(nums[left]+nums[right]==temporaryt)
{
temp.clear();
temp.push_back(nums[i]);
temp.push_back(nums[j]);
temp.push_back(nums[left]);
temp.push_back(nums[right]);
ret.push_back(temp);
while(left<right&&nums[left+1]==nums[left])
left++;
left++;
while(left<right&&nums[right-1]==nums[right])
right--;
right--;
}
else if(nums[left]+nums[right]<temporaryt)
{
//while(left<right&&nums[left]==nums[left+1])
// left++;
left++;
}
else
{
//while(left<right&&nums[right-1]==nums[right])
// right--;
right--;
}
}
while(j<n-2&&nums[j+1]==nums[j])
j++;
}
while(i<n-3&&nums[i+1]==nums[i])
i++;
}
return ret;
}
};
18. 4Sum
最新推荐文章于 2022-12-15 10:04:44 发布