# 1. 只出现一次的数字(LeetCode 136)中异或的三条性质如何保证成对元素抵消,为什么不需要额外空间? A 需哈希表 O(n) 空间 B 异或无自反性 C 异或的自反性 a⊕a=0 使成对元素抵消,单次元素保留,O(1) 空间 ✓ 正确答案 D 异或结果不确定
# 2. 位 1 的个数(LeetCode 191)中 n & (n-1) 循环清零最低位与查表法、内置 popcount 的取舍? A 无法用查表 B n&(n-1) 每次清零最高位 C 复杂度固定为 O(位数) D n&(n-1) 每次清零最低位 1,循环次数等于 1 的个数 ✓ 正确答案
# 3. 比特位计数(LeetCode 338)中 dp[i]=dp[i>>1]+(i&1) 的递推如何 O(n) 求出所有结果? A dp[i]=dp[i>>1]+(i&1),因 i 与 i>>1 差最低位,O(n) 递推 ✓ 正确答案 B dp[i]=dp[i>>1]+1 C 每数 O(log n) 计算 D 无法递推
# 4. 两数之和不用加号(371)中异或得无进位和、与左移得进位,递归终止条件如何设计 A 无需处理进位 B 与右移得进位 C 异或得进位 D 异或得无进位和、与左移得进位,carry 为 0 时终止 ✓ 正确答案
# 5. 只出现一次的数字 II(LeetCode 137)中按位统计 1 的个数并对 3 取模能找出单次元素,如何推广到出现 k 次? A 按位统计 1 的个数 mod 3,出现 3 次的贡献归零,单次保留;推广到 k 次用 mod k ✓ 正确答案 B 出现 3 次的贡献 mod 3 为 1 C 无法按位统计 D 只能处理出现 2 次
# 6. 只出现一次的数字 III(LeetCode 260)中如何用“最低不同位”把两个单次元素分到两组异或? A 各组异或得不到单次元素 B 分组依据是最高位 C 无需找不同位 D 用 a^b 的最低不同位分组,两个单次元素分到不同组后各组异或 ✓ 正确答案
# 7. 颠倒二进制位(LeetCode 190)中逐位取出逆序拼接的实现与复杂度? A 无法处理负数 B 用有符号右移 C 复杂度 O(log n) D 逐位取最低位拼到结果,循环 32 次 O(32),用 >>> 处理符号 ✓ 正确答案
# 8. 缺失数字(LeetCode 268)中异或法与高斯求和法的原理与溢出风险对比? A 异或法会溢出 B 高斯求和法无溢出 C 异或法无溢出,高斯求和法 n(n+1)/2 可能溢出 int ✓ 正确答案 D 两种方法都需 long
# 9. 2 的幂(LeetCode 231)中 n>0 且 n&(n-1)==0 的判定,扩展到 4 的幂(342)如何加掩码? A 2 的幂:n>0 且 n&(n-1)==0;4 的幂再加奇数位掩码 0x55555555 ✓ 正确答案 B 2 的幂用 n&(n+1)==0 C 4 的幂无需掩码 D 4 的幂是 2 的幂且 1 在偶数位
# 10. 汉明距离(LeetCode 461)中异或后统计 1 的个数,与内置 Integer.bitCount 的实现差异? A 异或得相同位 B 异或得不同位,统计 1 个数;bitCount 用分治/硬件指令 O(1),手写循环 O(1 个数) ✓ 正确答案 C bitCount 需遍历所有位 D 手写循环固定 O(32)
# 11. 数字范围按位与(LeetCode 201)中结果是公共前缀部分,如何用右移找公共前缀? A 后缀位保留 B 结果 = left 本身 C 结果 = 公共前缀,后缀进位变化被清零,用同时右移找公共前缀 ✓ 正确答案 D 无需右移
# 12. 最大单词长度乘积(LeetCode 318)中如何用 int 位掩码表示字母集合,预计算后 O(n²) 判交集? A 掩码相与为 1 表示无公共字母 B 用 int 位掩码表示字母集合,无公共字母即掩码相与为 0 ✓ 正确答案 C 需 O(26) 比较 D 无法用位掩码
# 13. 二进制求和(LeetCode 67)中模拟逐位加法时进位如何传递,与“大数加法”模板的关系? A 进位是 sum%2 B 逐位相加+进位,结果位 sum%2、进位 sum/2,是大数加法模板的 2 进制特例 ✓ 正确答案 C 结果位是 sum/2 D 与大数加法无关
# 14. 最大异或对(421)中 01-Trie 逐位贪心与哈希前缀法如何达到 O(n log A),为什么贪心最优 A 贪心从低位开始 B 01-Trie 逐位贪心取相反位,高位优先,O(n log A) ✓ 正确答案 C 复杂度 O(n) D 低位比高位优先
# 15. UTF-8 验证(393)中按首字节前缀位数判断后续字节个数,非法序列的边界分类 A 首字节 10 开头合法 B 后续字节无前缀要求 C 首字节前缀位数决定序列长度,后续字节必须以 10 开头,分类检查非法 ✓ 正确答案 D 无需检查长度
# 16. 格雷编码(LeetCode 89)中 G(n)=i^(i>>1) 的构造为什么保证相邻码只差一位? A 相邻码差两位 B G(n)=i^(i<<1) C G(n)=i^(i>>1),相邻 i 的进位只影响一位格雷码位,故只差一位 ✓ 正确答案 D 构造与进位无关
# 17. 子集(LeetCode 78)位枚举中 mask 从 0 到 2^n-1 枚举子集的顺序与回溯法的对比? A 与回溯顺序相同 B mask 从 1 到 2^n C 位枚举支持剪枝 D mask 从 0 到 2^n-1 枚举,按数值递增顺序,与回溯树形顺序不同 ✓ 正确答案
# 18. 二进制手表(LeetCode 401)中枚举小时与分钟的组合,如何统计亮灯数? A 无需统计亮灯 B 小时范围 0-24 C 枚举小时 0-11、分钟 0-59,统计 popcount 亮灯数匹配 ✓ 正确答案 D 分钟范围 0-100
# 19. 数字转换为十六进制(LeetCode 405)中负数用补码如何逐 4 位转换? A 每 4 位取 num&0xF,用 >>> 无符号右移处理负数补码 ✓ 正确答案 B 用 >> 右移 C 负数先转正数 D 无需无符号右移
# 20. 两数相除(29)中如何用倍增减法(二进制长除)在 32 位范围内实现,溢出边界如何处理 A MIN/-1 商为 MIN B 无需处理溢出 C 用乘法 D 除数翻倍逼近的二进制长除,MIN/-1 返回 MAX,用 long 防溢出 ✓ 正确答案