LeetCode 18. 4Sum

xiaoxiao2021-02-28  71

题目链接:

https://leetcode.com/problems/4sum/description/

题解:

在这之前,我们已经解决过了3Sum这个问题,那么,4Sum其实就是在3Sum的基础上,多加了一个。因此,我们可以这么去做,原本对于3Sum,我们只是先确定了一个,那么,我们可以先确定两个。其他地方的处理方法跟3Sum没什么区别。

代码:

class Solution { public: vector<vector<int>> fourSum(vector<int>& nums, int target) { set<vector<int> >res; sort(nums.begin(),nums.end()); for(int i=0;i<nums.size();i++) { for(int j=i+1;j<nums.size();j++) { int left=j+1,right=nums.size()-1; int x=nums[i]+nums[j]; while(left<right) { int y=nums[left]+nums[right]; if(x+y==target) { res.insert({nums[i],nums[j],nums[left],nums[right]}); while(left<right&&nums[left]==nums[left+1]) left++; while(left<right&&nums[right]==nums[right-1]) right--; left++; right--; } else if(x+y>target) right--; else left++; } } } return vector<vector<int> >(res.begin(),res.end()); } };
转载请注明原文地址: https://www.6miu.com/read-45146.html

最新回复(0)