目录
- 一、题目描述
- 二、算法原理
- 三、代码实现
一、题目描述
二、算法原理
三、代码实现
class Solution {
public:vector<int> missingTwo(vector<int>& nums) {//找到a^bint temp=0;for(auto num:nums){temp^=num;}for(int i=1;i<=nums.size()+2;i++){temp^=i;}//找到temp中为1的比特位在第几位int x=0;while(1){if(temp&(1<<x)){break;}else {x++;}}//将nums与1-nums.size()+2分成两个部分 假设a的x位是1 那么b的x位为0//第一部分a和x位为1的数 但是a只有1个//第二部分b和x位为0的数 但是b只有1个int a=0,b=0;for(auto num:nums){if((num>>x)&1){a^=num;}else{b^=num;}}for(int i=1;i<=nums.size()+2;i++){if((i>>x)&1){a^=i;}else{b^=i;}}return {a,b};}
};