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;
    }
}
相关推荐
取加若则_1 小时前
Linux进程调度:双队列高效管理
linux·算法
Tisfy2 小时前
LeetCode 961.在长度 2N 的数组中找出重复 N 次的元素:5种语言x5种方法(及其变种) —— All By Hand
数据结构·数学·算法·leetcode·题解
小O的算法实验室3 小时前
2024年ESWA SCI1区TOP,容错文化概率粒子群算法+多 AGV 路径规划,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
WW_千谷山4_sch3 小时前
洛谷P1120&UVA307 [CERC 1995] 小木棍
c++·算法·深度优先
XLYcmy4 小时前
高级密码猜测生成器AdvancedPasswordGenerator密码生成器程序详细分析
开发语言·python·算法·网络安全·开发工具·源代码·口令安全
im_AMBER5 小时前
Leetcode 93 找出临界点之间的最小和最大距离
c++·笔记·学习·算法·leetcode
有一个好名字5 小时前
力扣:除自身以外数组的乘积
java·算法·leetcode
bkspiderx6 小时前
C++中的访问控制:private、public与protected的深度解析
开发语言·c++·算法·访问控制·private·public·protected
ullio6 小时前
arc207c - Combine to Make Non-decreasing
算法
it运维技术圈6 小时前
斩杀线之老杨面试了一个42岁的资深大佬,他哭了
面试·职场和发展