LeetCode题解:2341. 数组能形成多少数对,哈希表,详细注释

原题链接

LeetCode题解:2341. 数组能形成多少数对

解题思路:

  1. 遍历数组,并使用Map缓存数字出现的次数关系
    • 如果出现偶数次,map.set(num, true)
    • 如果出现奇数次,map.set(num, false)
  2. 剩余数字的数量为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]
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值