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;
    }
}
相关推荐
m0_736919109 小时前
C++中的委托构造函数
开发语言·c++·算法
小小小小王王王9 小时前
洛谷-P1886 【模板】单调队列 / 滑动窗口
c++·算法
网络安全-杰克9 小时前
Jmeter压力测试工具安装与使用
自动化测试·软件测试·测试工具·jmeter·职场和发展
PPPPPaPeR.9 小时前
光学算法实战:深度解析镜片厚度对前后表面折射/反射的影响(纯Python实现)
开发语言·python·数码相机·算法
看我干嘛!9 小时前
python第五次作业
算法
历程里程碑9 小时前
Linux 库
java·linux·运维·服务器·数据结构·c++·算法
Sheep Shaun9 小时前
如何让一个进程诞生、工作、终止并等待回收?——探索Linux进程控制与Shell的诞生
linux·服务器·数据结构·c++·算法·shell·进程控制
Pluchon9 小时前
硅基计划4.0 简单模拟实现AVL树&红黑树
java·数据结构·算法
June bug9 小时前
【PMP】敏捷Scrum实践
经验分享·职场和发展·学习方法·scrum
生锈的键盘10 小时前
推荐算法实践:交叉特征的理解
算法