Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.
Note: The solution set must not contain duplicate triplets.
For example, given array S = [-1, 0, 1, 2, -1, -4],
A solution set is:
[
[-1, 0, 1],
[-1, -1, 2]
]
思路是遍历nums,并寻找与之匹配的另外两个数并入返回的结果。
有个问题。LeetCode原题目中要求返回的格式是IList
public class Solution {
public HashSet<List<int>> ThreeSum(int[] nums) {
Array.Sort(nums);
HashSet<List<int>> res = new HashSet<List<int>>();
for (int i = 0; i < nums.length-2; i++) {
if (i == 0 || (i > 0 && nums[i] != nums[i-1])) {
int a = i+1, b = nums.Length-1, c = 0 - nums[i];
while (a < b) {
if (num[a] + num[b] == c) {
List<int> temp = new List<int>(){nums[i], nums[a], nums[b]};
res.Add(temp);
while (a < b && nums[a] == nums[a+1]) a++;
while (a < b && num[b] == num[b-1]) b--;
a++; b--;
} else if (nums[a] + num[b] < c) a++;
else b--;
}
}
}
return res;
}
}