Tcdian / keep

今天不想做,所以才去做。
MIT License
5 stars 1 forks source link

350. Intersection of Two Arrays II #255

Open Tcdian opened 4 years ago

Tcdian commented 4 years ago

350. Intersection of Two Arrays II

给定两个数组,编写一个函数来计算它们的交集。

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]

Note

Tcdian commented 4 years ago

Solution

/**
 * @param {number[]} nums1
 * @param {number[]} nums2
 * @return {number[]}
 */
var intersect = function(nums1, nums2) {
    const cache = new Map();
    for (let i = 0; i < nums1.length; i++) {
        cache.set(nums1[i], (cache.get(nums1[i]) || 0) + 1);
    }
    const result = [];
    for (let i = 0; i < nums2.length; i++) {
        if (cache.get(nums2[i]) > 0) {
            result.push(nums2[i]);
            cache.set(nums2[i], cache.get(nums2[i]) - 1);
        }
    }
    return result;
};
function intersect(nums1: number[], nums2: number[]): number[] {
    const cache: Map<number, number> = new Map();
    for (let i = 0; i < nums1.length; i++) {
        cache.set(nums1[i], (cache.get(nums1[i]) || 0) + 1);
    }
    const result: number[] = [];
    for (let i = 0; i < nums2.length; i++) {
        if (cache.get(nums2[i]) as number > 0) {
            result.push(nums2[i]);
            cache.set(nums2[i], cache.get(nums2[i]) as number - 1);
        }
    }
    return result;
};