Leetcode 只出现一次的数字 II


也就是说,ones 和 twos 是若干个 并行更新的,相当于两个单独的0-1数组,two[i] one[i] 组成当前位 i 的状态。由于只存在一个出现次数为 1 的数字,所以遍历完所有数字后,各二进制位的状态只可能处于 00 或 01 状态,不可能处于 10 状态,此时由于twos恒为0,所以我们可以用 ones 来返回最终的结果。

java 实现

java 复制代码
class Solution {
    public int singleNumber(int[] nums) {
        int ones = 0, twos = 0;
        for(int num:nums) {
            ones = (ones ^ num) & ~twos; //更新所有位状态的 one 
            twos = (twos ^ num) & ~ones; //更新所有位状态的 two 
        }
        return ones;
    }
}
相关推荐
blackicexs28 分钟前
第五周第二天
算法
不吃粑粑-30 分钟前
FHQ Treap模版
数据结构·算法
2501_901147831 小时前
学习笔记|LeetCode 739 每日温度:从暴力枚举到单调栈线性最优解
笔记·学习·leetcode
追随者永远是胜利者1 小时前
(LeetCode-Hot100)22. 括号生成
java·算法·leetcode·职场和发展·go
CHANG_THE_WORLD1 小时前
多维数组传参为什么使用列指针?—— 深度解析
数据结构·算法
我命由我123451 小时前
Photoshop - Photoshop 工具栏(64)计数工具
学习·职场和发展·求职招聘·职场发展·课程设计·学习方法·photoshop
追随者永远是胜利者2 小时前
(LeetCode-Hot100)32. 最长有效括号
java·算法·leetcode·职场和发展·go
lifallen2 小时前
CDQ 分治 (CDQ Divide and Conquer)
java·数据结构·算法
追随者永远是胜利者2 小时前
(LeetCode-Hot100)31. 下一个排列
java·算法·leetcode·职场和发展·go
ValhallaCoder2 小时前
hot100-二分查找
数据结构·python·算法·二分查找