优选算法_位运算_只出现一次的数字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};
    }
};
相关推荐
-银雾鸢尾-2 分钟前
两数之和-C++实现
c++·算法
j7~13 分钟前
【动态规划算法专题】动态规划五部曲实战:泰波那契数、三步问题、最小花费爬楼梯
c++·算法·动态规划·数据结构与算法
jimy114 分钟前
C++ 报错的 qualifiers 的意思
开发语言·c++
倍利福猎头公司官方账号24 分钟前
大企业HR如何向猎头公司清晰传达AI岗位的技术需求?
人工智能·算法·机器人·求职招聘·业界资讯
揽星河..1 小时前
【C++】类和对象
c++·算法
D e re k ZH1 小时前
C++ 并发、未定义行为与工程化难点(No 3)
数据结构·c++·算法·面试
不积跬步无以至千里mmbb262 小时前
rust_analysis
开发语言·后端·rust
释厄6232 小时前
同性线套娃律——圆面积必然=1+2+...+n 的求和·圆心不与 π 相关
java·人工智能·算法·1024程序员节
暴力求解2 小时前
C++ ---继承(二)
开发语言·c++·算法
陈飞EXCEL3 小时前
北京杰飞 IT 旗下妙码生花少儿Python编程上线两大学习系统
开发语言·python·学习