public List<List<Integer>> threeSum(int[] nums) { List<List<Integer>> list = new ArrayList<>(); List<Integer> integers; Arrays.sort(nums); int a = 0; int b = 0; for(int i = 0;i < nums.length-2; i ++){ if (nums[i] > 0){ break; } //第一位去重 if (i > 0 && nums[i] == nums[i - 1]) continue; b = i + 1; int c = nums.length - 1; while (b < c) { if (nums[i] + nums[b] + nums[c] == 0) { integers = new ArrayList<>(); integers.add(nums[i]); integers.add(nums[b]); integers.add(nums[c]); list.add(integers); //第二位去重 while (b < c && nums[b] == nums[b + 1]){ b = b +1; } //第三位去重 while (b < c && nums[c] == nums[c - 1]){ c = c - 1; } b = b + 1; c = c - 1; } else if (nums[i] + nums[b] + nums[c] < 0) {//小于,b右移 b++; } else {//大于,c左移 c--; } } } return list; }
三元组算法
最新推荐文章于 2024-07-10 16:47:58 发布