137. 只出现一次的数字II
分析
考虑整数在计算机中以 32 位二进制形式表示,可以逐位统计数组中每个位上的 1 的出现次数
-
逐位遍历
- 对于每一位
i(从0到31位),统计所有数字中第i位上的1的总数c
- 对于每一位
-
模
3运算- 若某个位上的
1的出现次数不是3的倍数,则说明这个位在目标数中为1 - 将该位加入结果
res
- 若某个位上的
-
结果构建
- 将每一位结果通过位运算
res |= (c % 3) << i累加到最终结果res中
- 将每一位结果通过位运算
时间复杂度
时间复杂度 O(n)
空间复杂度
空间复杂度为 O(1)
C++代码
|
|