檔案管理-空閒儲存空間的管理
阿新 • • 發佈:2021-10-09
給你一個包含 n 個整數的陣列nums,判斷nums中是否存在三個元素 a,b,c ,使得a + b + c = 0 ?請你找出所有和為 0 且不重複的三元組。
注意:答案中不可以包含重複的三元組。
心之所向,素履以往 生如逆旅,一葦以航import java.util.ArrayList; import java.util.Arrays; import java.util.List; class Solution { public static List<List<Integer>> threeSum(int[] nums) { if (nums == null || nums.length == 0) { return new ArrayList<>(0); } List<List<Integer>> ret = new ArrayList<>(); Arrays.sort(nums); int n = nums.length; for (int i = 0; i < n - 2; ++i) { if (i != 0 && nums[i] == nums[i - 1]) { continue; } int l = i + 1, r = n - 1; while (l < r) { if (l != i + 1 && nums[l] == nums[l - 1]) { l++; continue; } if (nums[l] + nums[r] == -nums[i]) { ret.add(Arrays.asList(nums[i], nums[l], nums[r])); l++; r--; } else if (nums[l] + nums[r] > -nums[i]) { r--; } else { l++; } } } return ret; } }