136. Single Number(C++)

来源:互联网 发布:论文数据伪造 编辑:程序博客网 时间:2024/06/06 07:02

Given an array of integers, every element appears twice except for one. Find that single one.

Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?

分析:
1、异或运算是相同得0,不同得1;
2、高位补零,凑齐位数,即10=1010,3=0011,二者异或后为1001=9。

This XOR operation works because it’s like XORing all the numbers by itself. So if the array is {2,1,4,5,2,4,1} then it will be like we are performing this operation

((2^2)^(1^1)^(4^4)^(5)) => (0^0^0^5) => 5.

class Solution {public:    int singleNumber(vector<int>& nums) {        int res = 0;        int n = nums.size();        for (int i = 0; i < n; i++)             res ^= nums[i];            return res;    }};
原创粉丝点击