导航

Single Number

Posted on 2014-11-08 03:35  八竿子打不着  阅读(165)  评论(0)    收藏  举报

给一个整数数组,其中只有一个数字成单,其他数字都是成对出现,要在线性时间且不花费额外存储空间的条件下找出成单的数字。

 

解决起来出奇的简单,主要运用到异或运算的两个基本性质:

交换律:a^b^c=a^(b^c)

a^a=0  a^0=a

所以得到以下代码:

public class Solution {
    public int singleNumber(int[] A) {
        
        for (int i = 1; i < A.length; i++) {
            A[0] = A[0] ^ A[i];
        }
        return A[0];
        
    }
}