class Solution {
public:
vector<vector<int> > fourSum(vector<int> &num, int target) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector<vector<int> > retVectors;
if( num.size() < 4 )
return retVectors;
sort( num.begin() , num.end());
int size = num.size();
for( int indx = 0 ; indx < size ; ++indx )
{
if( indx != 0 && num[indx] == num[indx-1] )
{
continue;
}
for( int indx2 = indx + 1 ; indx2 < size ; ++indx2 )
{
if( (indx2 != (indx + 1)) && num[indx2] == num[indx2 - 1] )
{
continue;
}
int indx3 = indx2 + 1;
int indx4 = size - 1;
while( indx3 < indx4 )
{
int sum = num[indx] + num[indx2] + num[indx3] + num[indx4];
if( sum > target )
{
indx4--;
}
else if( sum < target )
{
indx3++;
}
else if(( indx3 !=( indx2 + 1 )) && num[indx3] == num[indx3-1])
{
indx3++;
}
else if( (indx4 != (size - 1)) && num[indx4] == num[indx4+1] )
{
indx4--;
}
else
{
vector<int> res;
res.push_back(num[indx]);
res.push_back(num[indx2]);
res.push_back(num[indx3]);
res.push_back(num[indx4]);
retVectors.push_back(res);
indx3++;
indx4--;
}
}
}
}
return retVectors;
}
};
Four Sum
最新推荐文章于 2020-12-28 15:09:01 发布
