1. 程式人生 > 其它 >350. 兩個陣列的交集II

350. 兩個陣列的交集II

集合

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/