class Solution {
public:
vector<vector<int> > threeSum(vector<int> &num) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector<vector<int> > resultVector;
int size = num.size();
if( size < 2 )
return resultVector;
sort( num.begin() , num.end() );
for( int indx = 0 ; indx < size ; ++ indx )
{
if( indx != 0 && num[indx] == num[indx-1])
{
continue;
}
int begin = indx + 1 ;
int end = size - 1;
while( begin < end )
{
int sum = num[indx] + num[begin] + num[end];
if( sum > 0 )
end--;
else if( sum < 0 )
begin++;
else if( begin != (indx+1) && num[begin] == num[begin-1])
{
begin++;
}
else if( (end != (size - 1)) && num[end] == num[end+1])
{
end--;
}
else
{
vector<int> result;
result.push_back( num[indx] );
result.push_back( num[begin] );
result.push_back( num[end] );
resultVector.push_back( result );
begin++;
end--;
// cout << num[indx] << " " << num[begin] << " " << num[end] << endl;
}
}
}
return resultVector;
}
};
Three Sum
最新推荐文章于 2022-02-05 12:19:14 发布