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;
    }
}
相关推荐
AIHR数智引擎17 小时前
AI时代,德鲁克依然是答案——只是问题变了
大数据·人工智能·学习·职场和发展·机器人·求职招聘
551只玄猫17 小时前
Why Financial Data Cannot Be Modeled with “Standard Machine Learning”
算法·机器学习·数学建模·金融·数据科学·英文·金融建模
小雅痞17 小时前
[Java][Leetcode middle] 274. H 指数
java·算法·leetcode
你撅嘴真丑17 小时前
a 进制转 b 进制(2~16)
算法
IronMurphy1 天前
【算法三十九】994. 腐烂的橘子
算法
迷茫的启明星1 天前
各职业在当前发展阶段,使用AI的舒适区与盲区
大数据·人工智能·职场和发展
Ares-Wang1 天前
算法》》旅行商问题 TSP、7座桥问题 哈密顿回路 深度优先 和 宽度优先
算法·深度优先·宽度优先
Liqiuyue1 天前
Transformer:现代AI革命背后的核心模型
人工智能·算法·机器学习
WolfGang0073211 天前
代码随想录算法训练营 Day34 | 动态规划 part07
算法·动态规划
Kk.08021 天前
Linux(十一)fork实例练习、文件操作示例及相关面试题目分享
linux·运维·算法