您的位置:首页 > 其它

[LeetCode]4Sum

2015-07-11 20:45 302 查看


和2sum 3Sum的思路类似

class Solution {
public:
vector<vector<int>> fourSum(vector<int>& nums, int target) {
vector<vector<int>> vv;
sort(nums.begin(),nums.end());
for(int i =0; i<nums.size(); ++i){
for(int j = i+1; j<nums.size(); ++j){
int front = j+1;
int rear = nums.size()-1;
while(front<rear){
int sum = nums[i] + nums[j] + nums[front] + nums[rear];
if(sum<target)
++front;
else if(sum>target)
--rear;
else{
vector<int> v4(4);
v4[0]=nums[i];v4[1]=nums[j];v4[2]=nums[front];v4[3]=nums[rear];
vv.push_back(v4);
while(front<rear&&nums[front]==v4[2])   ++front;
while(front<rear&&nums[rear]==v4[3])    --rear;

}
}
while(j<nums.size()-2&&nums[j+1]==nums[j]) ++j;
}
while(i<nums.size()-1&&nums[i]==nums[i+1]) ++i;
}
return vv;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: