点击打开链接
//K sum的复杂度是O(n^(K-1))
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string>
#include<cstring>
#include<string.h>
#include<math.h>
#include<algorithm>
#include<queue>
#include<vector>
#include<set>
#include<limits.h>
#include<assert.h>
#define LL long long
#define inf 0x3f3f3f3f
#define mod 1e9+7
using namespace std;
class Solution {
public:
vector< vector<int> > fourSum(vector<int>& nums, int target) {
vector< vector<int> > ret;
int i=0,j=0,n=0;
if(nums.size()<4) return ret;
n= nums.size();
sort(nums.begin(), nums.end());
for(i=0;i<n-3;i++){
if(i>0&&nums[i]==nums[i-1]) continue;
for(j=i+1;j<n-2;j++){
if(j>i+1&&nums[j]==nums[j-1]) continue;
int newtarget= target-nums[i]-nums[j];
int k=j+1, l=n-1;
while (k<l) {
if(nums[k]+nums[l]==newtarget){
ret.push_back({nums[i],nums[j],nums[k],nums[l]});
while (k<l&&nums[k]==nums[k+1]) {
k++;
}
while (k<l&&nums[l-1]==nums[l]) {
l--;
}
++k; --l;
}
else if(nums[k]+nums[l]>newtarget){
l--;
}
else k++;
}
}
}
return ret;
}
};
int main()
{
Solution temple;
return 0;
}