15題實現思路在於 先將3個數 轉換爲2個數求第三個數的問題,注意去重
class Solution {
public:vector<vector<int>> threeSum(vector<int>& nums) {
vector<vector<int>> ver;
sort(nums.begin(), nums.end());
int len = nums.size();
for( int i = 0; i < len-2; ++i)
{
if(i > 0 && nums[i] == nums[i-1])
{
continue;
}
int begin = i + 1;
int end = len -1;
while(begin < end)
{
if(nums[i] + nums[begin] + nums[end] == 0)
{
vector<int> tmp;
tmp.push_back(nums[i]);
tmp.push_back(nums[begin]);
tmp.push_back(nums[end]);
ver.push_back(tmp);
do
{
++begin;
}while(nums[begin-1] == nums[begin]);
do
{
--end;
}while(nums[end] == nums[end + 1]);
}else if ( nums[begin] + nums[end] + nums[i] > 0)
{
--end;
}else{
++begin;
}
}
}
return ver;
}
};