15.3Sum
原题
解决
由于这里用到三个数,如果使用暴力解法必然超时,所以就跳过暴力解法。这题也类似于leetcode第一题2Sum。
class Solution {
public List<List<Integer>> threeSum(int[] nums) {
Set<List<Integer>> res = new HashSet<>();
Arrays.sort(nums);
for(int i = 0; i < nums.length -2; i ++) {
int l = i + 1, r = nums.length - 1;
while (l < r ) {
int sum = nums[i] + nums[l] + nums[r];
if (sum == 0) {
List<Integer> list = new ArrayList<>();
list.add(nums[l]);
list.add(nums[i]);
list.add(nums[r]);
res.add(list);
l++;r--;
} else if (sum < 0) {
l++;
} else {
r--;
}
}
}
return new ArrayList<>(res);
}
}
耗时多,占用空间大,需要做优化。