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;
    }
}
相关推荐
2501_92495269几秒前
C++中的适配器模式
开发语言·c++·算法
智驱力人工智能6 分钟前
馆藏文物预防性保护依赖的图像分析技术 文物损害检测 文物破损检测 文物损害识别误报率优化方案 文物安全巡查AI系统案例 智慧文保AI监测
人工智能·算法·安全·yolo·边缘计算
wuguan_6 分钟前
Halcon中值滤波,均值滤波,高斯滤波
算法·halcon
☆5667 分钟前
C++安全编程指南
开发语言·c++·算法
tobias.b8 分钟前
机器学习 超清晰通俗讲解 + 核心算法全解(深度+易懂版)
人工智能·算法·机器学习
听忆.11 分钟前
系统集成项目管理(中项随笔~计算机网络)
经验分享·职场和发展·学习方法
budingxiaomoli17 分钟前
优选算法--bfs解决FloodFill问题
算法·宽度优先
超级大只老咪23 分钟前
贪心算法对应策略
算法·贪心算法
im_AMBER28 分钟前
Leetcode 145 回文数 | 加一
数据结构·算法·leetcode
2501_9454248029 分钟前
C++构建缓存加速
开发语言·c++·算法