350.两个变量的交集II(javascript)350.IntersectionofTwoArraysII
原创leetcode题目: https://leetcode-cn.com/problems/intersection-of-two-arrays-ii/
给你两个整数数组 nums1 和 nums2 ,请将两个数组的交集作为数组返回。返回结果中每个元素的出现次数应与两个数组中元素的出现数相同(如果出现次数不一致,请考虑取较小的值)。可以不考虑输出结果的顺序。
Given two integer arrays nums1 and nums2, return an array of their intersection. Each element in the result must appear as many times as it shows in both arrays and you may return the result in any order.
示例 1:
输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2,2]
示例 2:
输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[4,9]
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]
Explanation: [9,4] is also accepted.
var intersect = function (nums1, nums2) {
//提前获取数组的长度。
let len1 = nums1.length
let len2 = nums2.length
//确保要遍历的第一个数组最短
if (len1 > len2) {
intersect(nums2, nums1)
}
//以下操作是nums1遍历数组以获得每个项的次数。
let h = new Map()
let newList = []
for (let i = 0; i < len1; i++) {
if (!h.has(nums1[i])) {
h.set(nums1[i], 1)
} else {
h.set(nums1[i], h.get(nums1[i]) + 1)
}
}
//以下操作是nums2在map新数组中存在的项将添加到新数组中,从而将次数减少一次。
for (let i = 0; i < len2; i++) {
if (h.has(nums2[i]) && h.get(nums2[i]) > 0) {
newList.push(nums2[i]);
h.set(nums2[i], h.get(nums2[i]) - 1)
}
}
return newList
};
var intersect = function (nums1, nums2) {
let len1 = nums1.length
let len2 = nums2.length
if (len1 > len2) {
intersect(nums2, nums1)
}
let h = new Map()
let newList = []
for (let i = 0; i < len1; i++) {
h.set(nums1[i], (h.has(nums1[i]) ? h.get(nums1[i]) : 0) + 1)
//h.set(nums1[i], !h.has(nums1[i])?1:h.get(nums1[i]) + 1)//上面的代码在这里进行了优化。
}
for (let i = 0; i < len2; i++) {
if (h.has(nums2[i]) && h.get(nums2[i]) > 0) {
newList.push(nums2[i]);
h.set(nums2[i], h.get(nums2[i]) - 1)
}
}
return newList
}; 版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除
itfan123



