初级算法(第六题)
-
小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
-
给定两个数组,编写一个函数来计算它们的交集。
示例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
};