试图解决问题失败,复制进去并融合了点其他的东西进来
vector<vector<int> > threeSum(vector<int> &num)
{
vector<vector<int> > vt;
if(num.size() < 3)
return vt;
sort(num.begin(), num.end());
if(num[0] > 0)
return vt;
int k=num.size()-1;
int num1 = 0;
vector<int> t(3);
for (int i = 0;i < k-1; )
{
if(num[i] > 0)
return vt;
num1 = -num[i];
t[0] = num[i];
for (int j = i + 1, k=num.size()-1; j < k;)
{
if (num[j] + num[k] == num1)
{
t[1] = num[j++];
t[2] = num[k--];
vt.push_back(t);
while (j<k && num[j] == num[j-1]) j++;
while (j<k && num[k] == num[k+1]) k--;
}
else if (num[j] + num[k] < num1) j++;
else k--;
}
i++;
while (i<k-1 && num[i] == num[i-1]) i++;
}
return vt;
}
明天再试试…改改我自己的代码…