single-number

来源:互联网 发布:法国工资 知乎 编辑:程序博客网 时间:2024/06/07 04:44

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?
因为A XOR A = 0,且XOR运算是可交换的,于是,对于实例{2,1,4,5,2,4,1}就会有这样的结果:

(2^1^4^5^2^4^1) => ((2^2)^(1^1)^(4^4)^(5)) => (0^0^0^5) => 5
就把只出现了一次的元素(其余元素均出现两次)给找出来了!

class Solution {public:    int singleNumber(int A[], int n) {        int ans = A[0];        for (int i = 1; i < n; i++)        {            ans = ans ^ A[i];        }        return ans;    }};
0 0
原创粉丝点击