白菜刷LeetCode记-350. Intersection of Two Arrays II
今天题目如下:
比较简单,代码如下:
/** * @param {number[]} nums1 * @param {number[]} nums2 * @return {number[]} */ var intersect = function(nums1, nums2) { let myMap = new Map(); let myArr = new Array(); nums1.forEach(function(item){ if(myMap.has(item)){ myMap.set(item, myMap.get(item) + 1); }else{ myMap.set(item, 1); } }); nums2.forEach(function(item){ if(myMap.has(item) && myMap.get(item) > 0){ myArr.push(item); myMap.set(item, myMap.get(item) - 1); } }) return myArr; };
然后看了看讨论区的答案,别人用Array就实现了,而我还要用到Map这个数据结构,看来自己最近用Map的次数比较多了,同时也说明了自己要对Array的方法多加了解。
代码如下:
/** * @param {number[]} nums1 * @param {number[]} nums2 * @return {number[]} */ var intersect = function(nums1, nums2) { let arr = []; while(nums2.length > 0){ let item = nums2.pop(); if(nums1.indexOf(item) > -1){ let tmpidx = nums1.indexOf(item); arr.push(item); nums1.splice(tmpidx,1); } } return arr; };