leetcode 4sum

4-sum 已通过测试
定义一对指针,指向两头。再定义一对指针,指向中间的两个元素。加起来看看跟target比较一下。再决定内部指针怎么移动。
class Solution { public: vector<vector<int> > fourSum(vector<int> &num, int target) { vector<int>v; vector<vector<int>>v1; int len=num.size(); if(len<=3)return v1; sort(num.begin(),num.end()); for(int i=0;i<len-3;i++) { for(int k=len-1;k>i+2;k--) { int ab=num[i]+num[k]; int c=target-ab; int m=i+1,n=k-1; for(;m<n;) { int sum=num[m]+num[n]; if(sum==c) { v.clear(); v.push_back(num[i]); v.push_back(num[m]); v.push_back(num[n]); v.push_back(num[k]); if(count(v1.begin(),v1.end(),v)==0) v1.push_back(v); m++;n--; } else if(sum<c) { m++; } else n--; } } } return v1; } };
原文地址:https://www.cnblogs.com/tgkx1054/p/3053901.html