企业网站建设建议全屋装修设计定制整装
2026/1/21 22:15:13 网站建设 项目流程
企业网站建设建议,全屋装修设计定制整装,中国移动互联网,开发一个app的步骤给定题目是 LeetCode 137「Single Number II」#xff1a;在一个整数数组中#xff0c;除了一个元素只出现一次以外#xff0c;其余每个元素都恰好出现三次#xff0c;要求在 O(n) 时间、O(1) 额外空间内找出这个只出现一次的元素。cnblogs1​ 题意与难点 题目核心约束在一个整数数组中除了一个元素只出现一次以外其余每个元素都恰好出现三次要求在 O(n) 时间、O(1) 额外空间内找出这个只出现一次的元素。cnblogs1​题意与难点题目核心约束所有「杂音」元素都出现 3 次。只有目标元素出现 1 次。不能用哈希表计数不满足常数空间也不能排序不满足线性时间。leetcode1​难点在于如何利用「出现三次」这个信息把所有重复元素的贡献抵消掉只保留那个只出现一次的数的 位信息。cnblogs​基础思路按位计数 mod 3可以把每个数当成 32 位二进制整数从「每一位」的角度来看问题。dbwu1​对于第 i 位0 ≤ i 32统计数组里有多少个数在这一位是 1记为 count[i]。所有出现 3 次的数如果这一位是 1就为这一位贡献 3 的倍数个 1。只有那个出现 1 次的数如果这一位是 1会多贡献一个 1使总数变成 3k1。dbwu1​因此对每一位的计数做 count[i] % 3结果只可能是 0 或 1。结果为 1 的位说明这一位属于只出现一次的那个数结果为 0 的位说明这一位全被「3 次」的元素抵消干净了。linkedin1​最终把所有 count[i] % 3 1 的位组合起来就构成答案的二进制表示从而恢复出这个唯一元素。linkedin1​这个思路的逻辑完全正确时间复杂度是 O(32×n) 也就是 O(n)空间只需要 32 个计数器常数级符合题目要求。algo1​进一步优化有限状态机ones / twos在按位计数的基础上可以继续压缩空间把「每一位出现次数 mod 3」压缩成一个小型有限状态机用两个整数的比特来并行维护所有位的状态即常见的 ones / twos 写法。liadbiz.github1​对于某一位来说出现次数 mod 3 的状态只有三种0 次、1 次、2 次。用两位二进制来编码这三种状态例如00出现 0 次。01出现 1 次。10出现 2 次。出现第 3 次时状态回到 00相当于做了一次模 3 运算。liadbiz.github1​ones 和 twos 两个整数的每一位就分别代表该位计数的低位和高位整套逻辑就是在所有位上并行进行一个「模 3 加法器」。csdn1​最终出现次数为 1 的那个数的各个位会停留在状态 01也就是保存在 ones 里所以 ones 就是最后答案。csdn1​这个有限状态机写法本质上是对「按位计数 mod 3」的进一步压缩与抽象但核心思想完全一样利用模 3把所有出现三次的数字抹掉只留下出现一次的那个数的位模式。cnblogs1​负数处理要点由于题目允许负数通常使用 32 位有符号整数在按位计数的方案中只要一视同仁地处理 32 位包含最高的符号位最终重建出来的二进制如果最高位是 1就对应一个负数这样也能正确还原结果。vultr1​有些讲解会特别说明第 31 位符号位需要单独按补码规则处理但只要语言本身用补码表示按位统计 重建即可自然兼容。algo1​小结思想起点从「数」切换到「位」对于每一位统计 1 的出现次数。关键观察出现 3 次的数在每一位上的贡献必然是 3 的倍数只有目标数让某些位变成 3k1。实现路径入门版32 个计数器 双层循环 mod 3 重构答案。进阶版用 ones / twos 状态机把每一位的计数 mod 3 压缩到两个整型中。整道题本质就是一题典型的「按位计数 模运算 位运算有限状态机」练习非常适合作为位运算思维的入门模板。dbwu1​

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询