首页 > 代码库 > [LeetCode]15 3Sum
[LeetCode]15 3Sum
https://oj.leetcode.com/problems/3sum/
public class Solution { public List<List<Integer>> threeSum(int[] num) { // Solution A // return threeSum_Sort(num); // Solution B return threeSum_Map(num); } //////////////////// // Solution A: Sort // // O(n^2) private List<List<Integer>> threeSum_Sort(int[] numbers) { Set<List<Integer>> toReturn = new HashSet<>(); // Sort Arrays.sort(numbers); int len = numbers.length; for (int i = 0 ; i < len ; i ++) { // Fix i. // move index j from i -> len // index k from len to i; int j = i + 1; int k = len - 1; while (j < k) { int sum = numbers[i] + numbers[j] + numbers[k]; if (sum == 0) { List<Integer> r = new ArrayList<>(); r.add(numbers[i]); r.add(numbers[j]); r.add(numbers[k]); toReturn.add(r); j ++; k --; } else if (sum > 0) { k --; } else { j ++; } } } return new ArrayList<List<Integer>>(toReturn); } //////////////////// // Solution A: Map // // O(n^2) private List<List<Integer>> threeSum_Map(int[] num) { Set<List<Integer>> toReturn = new HashSet<>(); Map<Integer, Integer> map = new HashMap<>(); int len = num.length; for (int i = 0 ; i < len ; i ++) { map.put(num[i], i); } for (int i = 0 ; i < len ; i ++) { for (int j = i + 1 ; j < len ; j ++) { int sum = num[i] + num[j]; Integer pos = map.get(-sum); if ((pos != null) && (pos != i && pos != j)) // A result found. { List<Integer> r = new ArrayList<Integer>(); r.add(num[i]); r.add(num[j]); r.add(-sum); Collections.sort(r); toReturn.add(r); } } } return new ArrayList<List<Integer>>(toReturn); } //////////////////// // Solution A: Brute Force // // Assume num.length >= 3 private List<List<Integer>> threeSum_BruteForce(int[] num) { Set<List<Integer>> toReturn = new HashSet<>(); int len = num.length; for (int i = 0 ; i < len ; i ++) { for (int j = i + 1 ; j < len ; j ++) { for (int k = j + 1 ; k < len ; k ++) { if (num[i] + num[j] + num[k] == 0) { List<Integer> r = new ArrayList<Integer>(Arrays.asList(num[i], num[j], num[k])); Collections.sort(r); toReturn.add(r); } } } } return new ArrayList<List<Integer>>(toReturn); } }
[LeetCode]15 3Sum
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。