Map
是JavaScript中的一种数据结构,它可以用来存储键值对,并且可以根据键来快速查找对应的值。Map
的特点如下:
- 键可以是任意类型的值,包括对象和函数。
- 键值对的顺序是按照插入顺序进行的。
- 可以使用
size
属性获取Map
中键值对的数量。 - 可以使用
set(key, value)
方法向Map
中添加键值对。 - 可以使用
get(key)
方法根据键获取对应的值。 - 可以使用
has(key)
方法检查Map
中是否存在指定的键。 - 可以使用
delete(key)
方法删除指定的键值对。 - 可以使用
clear()
方法清空Map
中的所有键值对。
示例 1:
输入: nums1 = [1,2,2,1], nums2 = [2,2]
输出: [2,2]
示例 2:
输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出: [4,9]
intersect(nums1, nums2) {
const map = new Map();
const result = [];
// 统计nums1中数字的频次
for (let num of nums1) {
if (map.has(num)) {
map.set(num, map.get(num) + 1);
} else {
map.set(num, 1);
}
}
// 在nums2中寻找相同数字,并减少对应的频次
for (let num of nums2) {
if (map.has(num) && map.get(num) > 0) {
result.push(num);
map.set(num, map.get(num) - 1);
}
}
return result;
}
const nums1 = [1,2,2,1];
const nums2 = [2,2];
console.log(intersect(nums1, nums2)); // 输出 [2,2]
const nums3 = [4,9,5];
const nums4 = [9,4,9,8,4];
console.log(intersect(nums3, nums4)); // 输出 [4,9]
在示例代码中,我们使用Map
来统计nums1
中数字的频次。首先,我们创建了一个空的Map
对象map
。然后,我们遍历nums1
数组,对于每个数字,如果map
中已经存在该数字,则将其对应的频次加1;否则,将该数字添加到map
中,并设置其频次为1。
在遍历nums2
数组时,我们检查map
中是否存在当前数字,并且该数字的频次大于0。如果满足条件,说明该数字在nums1
和nums2
中都存在,并且还没有被完全匹配。我们将该数字添加到result
数组中,并将其对应的频次减1。
最后,我们返回result
数组作为结果。
来源:力扣(LeetCode)
链接:leetcode-cn.com/problems/in…
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。