leetcode 349 兩個陣列的交集
阿新 • • 發佈:2020-11-02
// 方法1 public static int[] intersection(int[] nums1, int[] nums2) { if (nums1 == null || nums1.length == 0 || nums2 == null || nums2.length == 0) { return new int[]{}; } List<Integer> integerNum1 = new ArrayList<>(); Map<Integer, Integer> integers = new HashMap<>(); for (int num : nums1) { if (!integerNum1.contains(num)) integerNum1.add(num); } for (int num : nums2) { if (integerNum1.contains(num)) { integers.put(num, 1); } } int[] res = new int[integers.size()]; int index = 0; for (Map.Entry entry : integers.entrySet()) { res[index++] = (int)entry.getKey(); } return res; } // 方法2 public static int[] intersection(int[] nums1, int[] nums2) { if (nums1 == null || nums1.length == 0 || nums2 == null || nums2.length == 0) { return new int[]{}; } Set<Integer> integerSet = new HashSet<>(); for (int num : nums1) { integerSet.add(num); } int[] res = new int[nums2.length]; int index = 0; for (int num : nums2) { if (integerSet.contains(num)) { res[index++] = num; integerSet.remove(num); } } return Arrays.copyOf(res, index); }
// 測試用例 public static void main(String[] args) { int[] nums1 = new int[]{1, 2, 2, 1}, nums2 = new int[]{2, 2}; int[] ans = intersection(nums1, nums2); System.out.println("Intersection demo01 result:"); for (int res : ans) { System.out.print(res + " "); } System.out.println(); nums1 = new int[]{4, 9, 5}; nums2 = new int[]{9, 4, 9, 8, 4}; ans = intersection(nums1, nums2); System.out.println("Intersection demo02 result:"); for (int res : ans) { System.out.print(res + " "); } System.out.println(); }
leetcode 350: 兩個陣列的交集II
https://www.cnblogs.com/fyusac/p/13292985.html