using System;
using System.Collections.Generic;
class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param num int整型一维数组
* @return int整型二维数组
*/
public List<List<int>> threeSum (List<int> num) {
// write code here
List<List<int>> ans=new List<List<int>>();
num.Sort();
int preI=-101;
int preJ=-101;
int preK=-101;
for(int i=0;i<num.Count-2;i++)
{
if(num[i]==preI)
continue;
else
preI=num[i];
int j=i+1;
int k=num.Count-1;
while(j<k)
{
var sum=num[i]+num[j]+num[k];
if(sum==0)
{
if(preJ==num[j] && preK==num[k])
{
j++;
k--;
continue;
}
ans.Add(new List<int>{num[i],num[j],num[k]});
preK=num[k];
preJ=num[j];
j++;
k--;
}
else if(sum>0)
{
preK=num[k];
k--;
}
else
{
preJ=num[j];
j++;
}
}
}
// int preI=-101;
// int preJ=-101;
// for(int i=0;i<num.Count;i++)
// {
// if(num[i]==preI)
// continue;
// else
// preI=num[i];
// for(int j=i+1;j<num.Count;j++)
// {
// if(preJ==num[j])
// continue;
// else
// preJ=num[j];
// var s=-1*(num[i]+num[j]);
// if(num.Contains(s))
// {
// if(num.LastIndexOf(s)>j)
// {
// ans.Add(new List<int>{num[i],num[j],s});
// // if(s==0 && num[j]==0)
// // {
// // i=num.LastIndexOf(s);
// // break;
// // }
// }
// }
// }
// }
return ans;
}
}



京公网安备 11010502036488号