題目描述
給定兩個數組,編寫一個函數來計算它們的交集(保留重複元素)。
源代碼(保留重複元素)
function compare(v1,v2){
if(v1<v2)return -1;
else if(v1>v2) return 1;
else return 0;
}
var intersect = function(nums1, nums2) {
var i=0,j=0;
var arr=new Array();
nums1.sort(compare);
nums2.sort(compare);
while(i<nums1.length&&j<nums2.length){
if(nums1[i]==nums2[j]){
arr.push(nums1[i]);
i++;
j++;
}
else if(nums1[i]<nums2[j]){
i++;
}else {
j++;
}
}
return arr;
};
因為不熟悉js,是以直接用sort()排序,但是sort()排序是按照首字母第一位進行排序的,這樣顯然不對,需要在sort()裡面添加一個比較函數compare();
以下方法都是去除重複元素的
源代碼(這種方法去除重複元素)
求交集
var intersect = function(nums1, nums2) {
var seta=new Set(nums1);
var setb=new Set(nums2);
var st=Array.from(new Set(nums1.filter(v=>setb.has(v))));
return st;
};
求并集
let union = Array.from(new Set(num3.concat(num4)));
求差集
var num3=[1,2,2,1];
var num4=[2,2];
var seta=new Set(num3);
var setb=new Set(num4);
let difference = Array.from(new Set(num3.concat(num4).filter(v=>!seta.has(v)||!setb.has(v))));