前言
正文
题目
未看题解时,解题的思路
自己实现的代码
看了题解后解题的思路
固定一个数,求另外两个的和。
标准答案的代码
code
class Solution {
public:
vector<vector<int>> threeSum(vector<int>& nums) {
vector<vector<int>> res;
if(nums.size()<3)
return res;
sort(nums.begin(),nums.end());
for(int first =0;first<nums.size();first++)
{
if(nums[first]>0)
return res;
if(first>0&&nums[first-1]==nums[first])
continue;
int left = first+1;
int right = nums.size()-1;
while(left<right)
{
if((nums[left]+nums[right])>-nums[first])
{
right--;
}
else if((nums[left]+nums[right])<-nums[first])
{
left++;
}
else
{
res.push_back({nums[first],nums[left],nums[right]});
left++;
right--;
while(left<right&&nums[left]==nums[left-1])
{
left++;
}
while(left<right&&nums[right]==nums[right+1])
{
right--;
}
}
}
}
return res;
}
};