代码随想录第七天 2023.7.18
题目链接:18. 四数之和 - 力扣(LeetCode)https://leetcode.cn/problems/4sum/
代码如下:
class Solution {
public:
vector<vector<int>> fourSum(vector<int>& nums, int target) {
vector<vector<int>> result;
sort(nums.begin(),nums.end());
for(int k=0;k<nums.size();k++){
if(nums[k]>target && nums[k]>=0){
break;
//剪枝操作
}
if(k>0&&nums[k]==nums[k-1]){
continue;
//指针k的去重
}
for(int i=k+1;i<nums.size();i++){
if(nums[k]+nums[i]>target && nums[k]+nums[i]>0){
break;
//二级剪枝
}
if(i>k+1&&nums[i]==nums[i-1]){
continue;
//指针i的去重
}
int left=i+1;
int right=nums.size()-1;
while(left<right){
if((long)nums[k]+nums[i]+nums[left]+nums[right]>target){
right--;
}
else if((long)nums[k]+nums[i]+nums[left]+nums[right]<target){
left++;
}
else{
result.push_back(vector<int>{nums[k],nums[i],nums[left],nums[right]});
while(right > left && nums[left]==nums[left+1]){
left++; //指针left的去重
}
while(right > left && nums[right]==nums[right-1]){
right--; //指针right的去重
}
right--;
left++;
}
}
}
}
return result;
}
};
本题和三数之和解题思路相似,可比较记忆学习
15. 三数之和 - 力扣(LeetCode)https://leetcode.cn/problems/3sum/(4条消息) Leetcode:15. 三数之和_我爱编程!的博客-CSDN博客https://blog.csdn.net/xvxhshs/article/details/131782895