Leetcode 只出现一次的数字 II


也就是说,ones 和 twos 是若干个 位 并行更新的,相当于两个单独的0-1数组,twoi onei 组成当前位 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;
    }
}
相关推荐
看浪的路人10 分钟前
第6讲:Agent 安全体系——Prompt 注入防御、工具调用审计与输出合规
人工智能·算法
局部有解21 分钟前
LeetCode Hot100 438 找到字符串中所有字母异位词
c++·算法·leetcode
垆边人似月.30 分钟前
移动长度 k 子串使字符串变成回文
数据结构·算法
pride.li40 分钟前
第12章 Python 教程-流程控制:循环结构
linux·服务器·python·算法
海绵宝宝转agent1 小时前
2026-10-16 4算法+1面经
算法
小poop1 小时前
基础排序算法详解——插入、选择与交换排序
算法·排序算法
青蓝智慧马老师2 小时前
想学数据分析但零基础,正确顺序不是先学 Python
大数据·人工智能·算法
jeo陽2 小时前
05-数组与冒泡排序:第一个数据结构与经典算法
c语言·数据结构·算法
鸽鸽程序猿2 小时前
【刷题册】hot21-25
算法
Keven_112 小时前
算法札记:记忆化搜索中面对多组数据的初始化
算法