LeetCode136.只出现一次的数字[异或运算典例]
作者:互联网
这种去重类的题目,用使用set或者map是常规套路;
但是用异或运算会很有逼格啊哈哈
其实也是套路满满
异或运算法则:
0 ^ 0 = 0, 0 ^ 1 = 1, 1 ^ 0 = 1, 1 ^ 1 = 0
即相应位的值相同的,结果为 0,不相同的结果为 1。
排序查找的笨方法:
class Solution {
public:
int singleNumber(vector<int>& nums) {
sort(nums.begin(),nums.end());
for(int i=0;i<nums.size()-1;i+=2){
if(nums[i]!=nums[i+1])
return nums[i];
}
return nums[nums.size()-1];
}
};
异或运算:
class Solution {
public:
int singleNumber(vector<int>& nums) {
int a=0;
for(int i = 0;i<nums.size();i++){
a^=nums[i];
}
return a;
}
};
标签:典例,运算,nums,int,异或,vector,LeetCode136,public 来源: https://blog.csdn.net/qq_41895747/article/details/104752782