初级算法-数组章节-两个数组的交集II

117 阅读1分钟

初级算法(第六题)

  • 小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

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

示例1:

输入: nums1 = [1,2,2,1], nums2 = [2,2]
输出: [2,2]

示例2:

输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出: [4,9]

说明:

  • 输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。
  • 我们可以不考虑输出结果的顺序。

解题思路

首先我们可以将两个数组排序,然后设置两个指针从0开始,然后两两对比,相同的话就将值放在新的数组里面,如果值不相同就将值小的指针向右移,到最后不能移动位置结束

 * @param {number[]} nums1
 * @param {number[]} nums2
 * @return {number[]}
 */
var intersect = function(nums1, nums2) {
    let list = [];
    nums1.sort((a,b)=>a-b);
    nums2.sort((a,b)=>a-b);
    let i = 0,j=0;
    while(i<nums1.length && j<nums2.length){
        if(nums1[i] === nums2[j]){
            list.push(nums1[i])
            i++;
            j++;
        } else if(nums1[i]<nums2[j]){
            i++
        } else{
            j++
        }
    }
    return list
};