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;
    }
}
相关推荐
liuyao_xianhui7 小时前
优选算法_锯齿形层序遍历二叉树_队列_C++
java·开发语言·数据结构·c++·算法·链表
秃头狂魔7 小时前
【HOT100】DAY2
python·算法
想带你从多云到转晴7 小时前
03、数据结构与算法--单向链表
java·数据结构·算法
程序员三藏7 小时前
接口自动化测试思路和实战:编写线性测试脚本实战
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
mjhcsp7 小时前
AT_arc205_c [ARC205C] No Collision Moves 题解
开发语言·c++·算法·题解
Yzzz-F7 小时前
Problem - 1114C - Codeforces[勒让德公式]
算法
热水过敏7 小时前
前路迷茫,再次起航
笔记·程序人生·职场和发展
木井巳7 小时前
【笔试强训】Day1
java·算法
leiming67 小时前
巧用 FreeRTOS 任务通知作“邮箱”:NeoPixel 灯环控制实战
java·前端·算法
老四啊laosi7 小时前
[双指针] 4. 力扣--盛最多水的容器
算法·leetcode·装水最多的容器