LeetCode 题解:2341. 数组能形成多少数对,哈希表,详细注释
原题链接
解题思路:
遍历数组,并使用
Map
缓存数字出现的次数关系如果出现偶数次,
map.set(num, true)
如果出现奇数次,
map.set(num, false)
剩余数字的数量为
nums.length - 2 * pairCount
复制代码
本文字数:425 字
阅读完需:约 1 分钟
遍历数组,并使用Map
缓存数字出现的次数关系
如果出现偶数次,map.set(num, true)
如果出现奇数次,map.set(num, false)
剩余数字的数量为nums.length - 2 * pairCount
/**
* @param {number[]} nums
* @return {number[]}
*/
var numberOfPairs = function(nums) {
let map = new Map() // 使用Map缓存数字是否成对
let pairCount = 0 // 统计数对数量
for (const num of nums) {
// 如果已记录了数字:
// 1. 已记录数字成对:存储false
// 2. 已记录数字不成对:存储true
// 如果未记录数字:存储false,表示数字出现一次
map.set(num, map.has(num) ? !map.get(num) : false)
// 如果map.get(num)为true,表示数字成对,记录1个数量
if (map.get(num)) {
pairCount++
}
}
// 返回数对数量
// 剩余数字数量,可以根据数对数量计算得出
return [pairCount, nums.length - 2 * pairCount]
};
还未添加个人签名 2018-08-29 加入
还未添加个人简介
促进软件开发及相关领域知识与创新的传播
评论