using System.Collections;
public class Solution {
public IList<IList<int>> ThreeSum(int[] nums) {
List<IList<int>> listThrSum = new List<IList<int>>();
if(nums.Length < 3) return listThrSum;
Array.Sort(nums);
for(int k = 0;k < nums.Length - 2; k ++){
if(nums[k] > 0) break;
if(k > 1){
if(nums[k] == nums[k - 1]) continue;
}
int i = k + 1;
int j = nums.Length - 1;
while(i < j){
int sum = nums[i] + nums[j] + nums[k];
if(sum > 0) j --;
if(sum == 0){
var list = new List<int>();
list.Add(nums[i]);
list.Add(nums[j]);
list.Add(nums[k]);
listThrSum.Add(list);
i ++;
j --;
while(i < j && nums[i] == nums[i-1]) i++;
while(i < j && nums[j] == nums[j-1]) j--;
}
else if(sum < 0) i++;
}
}
return listThrSum;
}
}