class Solution {
public List<List<Integer>> threeSum(int[] arr) {
int n = arr.length;
Arrays.sort(arr);//排序过后,双指针算法才能起到效果
HashSet<List<Integer>> set = new HashSet<>();//利用set去重,set里面放list集合
for (int i = 0; i < arr.length; i++) {
int l = i + 1;
int r = n - 1;
while (l < r) {//右边大于左边结束
if (arr[i] + arr[l] + arr[r] == 0) {//满足条件
set.add(Arrays.asList(arr[i], arr[l], arr[r]));//格式化插入
l++;
r--;
} else if (arr[i] + arr[l] + arr[r] > 0) {//第一个值固定的,移动的是二、三值
r--;
} else {
l++;
}
}
}
List<List<Integer>> x = new ArrayList<>();
x.addAll(set);
return x;//按照题目返回
}
}
讲解题目b站地址:力扣题目15-三数之和_哔哩哔哩_bilibili