🗒️645. 错误的集合
2025-2-21
| 2025-2-22
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
创建时间
Feb 21, 2025 09:24 AM
集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 。
给定一个数组 nums 代表了集合 S 发生错误后的结果。
请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。

哈希表

位运算

重复的数字在数组中出现2次,丢失的数字在数组中出现0次,其余的每个数字在数组中出现1次。在数的n个数字后面再添加从1到n的每个数字,得到2n个数字,则在2n个数字中,重复的数字出现3次,丢失的数字出现1次,其余的每个数字出现2次。
设 a 和 b 分别表示重复的数字和丢失的数字,则对上述 2n 个数字进行异或计算,最后化简可以得到 xor = a ^ b。因为 a ≠ b,所以 xor 不为 0,我们可以找 xor 中的最低位的 1,就是 a 与 b 的不同的位,作为区分 a 与 b 的区别之位。lowbit = xor ^ (-xor)。
因此,我们按照 lowbit 区分,得到两组数据。

📎 参考

  • 【题单】位运算
  • 2546. 执行逐位运算使字符串相等3153. 所有数对中数位差之和
    Loading...