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;
    }
}
相关推荐
敲敲了个代码17 分钟前
[特殊字符] 空数组的迷惑行为:为什么 every 为真,some 为假?
前端·javascript·react.js·面试·职场和发展
菜鸡儿齐23 分钟前
leetcode-最小栈
java·算法·leetcode
雪人不是菜鸡23 分钟前
简单工厂模式
开发语言·算法·c#
岛雨QA30 分钟前
常用十种算法「Java数据结构与算法学习笔记13」
数据结构·算法
weiabc30 分钟前
printf(“%lf“, ys) 和 cout << ys 输出的浮点数格式存在细微差异
数据结构·c++·算法
铸人30 分钟前
大数分解的Shor算法-C#
开发语言·算法·c#
问好眼33 分钟前
《算法竞赛进阶指南》0x01 位运算-3.64位整数乘法
c++·算法·位运算·信息学奥赛
yyjtx33 分钟前
DHU上机打卡D31
开发语言·c++·算法
GEO行业研究员33 分钟前
《认知锚定与路径锁死:基于爱搜光年模型的AI决策链条风险放大机制监测》
人工智能·算法·ai搜索优化·geo优化·医疗geo·医疗geo优化
wefg138 分钟前
【算法】单调栈和单调队列
数据结构·算法