优选算法_位运算_只出现一次的数字3_C++

一.题目解析

有一个数组,里面的数都是成双成对的,只有两个是单独的

算法讲解:位运算

我们可以利用消消乐A^A=0来消除相同的数字,只剩下a^b=tmp

再循环进行异或消消乐就可以再AB数组分别得到ab

二.代码编写

cpp 复制代码
class Solution {
public:
    vector<int> singleNumber(vector<int>& nums) {
        int tmp=0;
        for(int num:nums)
        {
            tmp^=num;
        }
        int x=0;
        if(tmp==INT_MIN)
        {
            x=tmp;
        }
        else
        {
            x=tmp&(-tmp);
        }
        
        vector<int>a,b;
        for(auto num:nums)
        {
            if((num&x)!=0)a.push_back(num);//第x位是1的*****
            else b.push_back(num);//第x位是0的
        }
        int num1=0,num2=0;
        for(auto x:a)
        {
            num1^=x;
        }
        for(auto y:b)
        {
            num2^=y;
        }
        return {num1,num2};
    }
};
相关推荐
jimy15 小时前
C语言历史版本和gnu扩展版本
c语言·算法·gnu
shehuiyuelaiyuehao5 小时前
关于算法14,15解决一些问题
算法
techdashen5 小时前
Cloudflare 用 Rust 实现 QUIC 协议:quiche 是怎么设计的
开发语言·后端·rust
探序基因5 小时前
单细胞转录组Seurat去批次-FastMNN算法及大细胞量评测
linux·算法
阿Y加油吧5 小时前
二刷 LeetCode:300. 最长递增子序列 & 152. 乘积最大子数组 复盘笔记
笔记·算法·leetcode
我是大聪明.5 小时前
大模型Tokenizer原理:BPE、WordPiece与子词编码的核心机制深度解析
人工智能·线性代数·算法·机器学习·矩阵
wuxianda10305 小时前
苹果App上架4.3a问题3天解决方案汇报总结
开发语言·javascript·uni-app·ecmascript·ios上架·苹果上架
自我意识的多元宇宙5 小时前
数据结构----希尔排序
数据结构·算法·排序算法
y = xⁿ5 小时前
Redis八股学习日记:数据结构;跳表的底层;Reids的事务机制
数据结构·redis·学习
無斜5 小时前
【CAPL实用开发】--- CAPL调用 .NET DLL
开发语言·c#·capl·canoe