public ArrayList<ArrayList<Integer>> threeSum(int[] num) {
ArrayList<ArrayList<Integer>> resultList = new ArrayList<>();
int len = num.length;
if (num == null || len < 3) {
return list;
}
Arrays.sort(num);
for (int i = 0; i < len; i++) {
if (num[i] > 0) {
return list;
}
if (i > 0 && num[i] == num[i - 1]) {
continue;
}
int L = i + 1;
int R = len - 1;
while (L < R) {
int sum = num[i] + num[L] + num[R];
if (sum == 0) {
ArrayList<Integer> arrayList = new ArrayList<>();
arrayList.add(num[i]);
arrayList.add(num[L]);
arrayList.add(num[R]);
resultList.add(arrayList);
while (L < R && num[L] == num[L + 1]) {
L++;
}
while (L < R && num[R] == num[R - 1]) {
R--;
}
L++;
R--;
} else if (sum < 0) {
L++;
} else if (sum > 0) {
R--;
}
}
}
return resultList;
}
三个数之和
三数之和问题的解决方案
最新推荐文章于 2025-11-28 18:05:33 发布
该代码实现了一个求解整数数组中三数之和为零的子数组的算法。首先对数组进行排序,然后遍历数组找到第一个元素,通过双指针法在剩余元素中寻找另外两个数使得三数之和为零。当找到符合条件的子数组时,将其添加到结果列表中。若存在重复元素,通过跳过重复项避免重复结果。最后返回所有满足条件的子数组列表。
2755

被折叠的 条评论
为什么被折叠?



