350. 兩個陣列的交集II
阿新 • • 發佈:2021-11-30
集合
import java.util.ArrayList; import java.util.HashMap; class Solution { public int[] intersect(int[] nums1, int[] nums2) { /** * 用map儲存元素和出現的次數 * 用list儲存交集元素 * containsKey()方法時間複雜度為O(logn) */ HashMap<Integer, Integer> map = new HashMap<>(); ArrayList<Integer> list = new ArrayList<>(); for (int n : nums1){ if (!map.containsKey(n)){ map.put(n, 1); } else { map.put(n, map.get(n) + 1); } } for (int n : nums2){ if (map.containsKey(n) && map.get(n) > 0){ list.add(n); map.put(n, map.get(n) - 1); } } /** * list.stream().mapToInt(k->k).toArray()方法將ArrayList轉換為int[]陣列 */ int[] res = list.stream().mapToInt(k->k).toArray(); return res; } } /** * 時間複雜度 O(nlogn) * 空間複雜度 O(n) */
https://leetcode-cn.com/problems/intersection-of-two-arrays-ii/