leetcode - [350] Intersection of Two Arrays II

2020/06/28

问题描述

Given two arrays, write a function to compute their intersection.

计算两个整数数组的交集。

举个例子:

Example 1:
Input: nums1 = [1,2,2,1], nums2 = [2,2]
Output: [2,2]

Example 2:
Input: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
Output: [4,9]

解法1

我的想法是这样的:

首先,创建一个HashMap保存nums1中的元素及其出现的次数。

然后,遍历nums2数组,若当前元素在map中出现的次数大于0

则加入最终列表ans中,并将次数减一。

这里需要注意,由于num2中可能存在num1中没有的元素,所以需要使用:map.getOrDefault(n, 0)

来看下完整实现:

class Solution {
    public int[] intersect(int[] nums1, int[] nums2) {
        
        List<Integer> ans = new LinkedList<>();
        HashMap<Integer, Integer> map = new HashMap<>();
        
        for (int n: nums1){
            map.put(n, map.getOrDefault(n, 0) + 1);
        }
        
        for (int n: nums2){
            if (map.getOrDefault(n, 0) > 0){
                ans.add(n);
                map.put(n, map.get(n) - 1);
            }
        }
        return ans.stream().mapToInt(i -> i).toArray();
    }
}

Enjoy it !


一位喜欢提问、尝试的程序员

(转载本站文章请注明作者和出处 姚屹晨-yaoyichen

Post Directory