LeetCode--single-number複雜度

1、題目

給定一個整數數組,每個元素都出現了兩次,但有一個只出現了一次,請找出這個數。

Note:算法要求有線性時間複雜度,並且不佔用額外的空間。

2、解法:

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

3、思路:

異或的特點:

        1).異或滿足交換律。如1^2^1=1,2^1^1=2,一個數被另外兩個數異或兩次,該數本身不變。

        2).相同兩個數異或爲0。

        3).0異或一個數爲那個數本身。

4、擴展:

異或也可以實現兩個數據的交換,不用臨時變量的方法。

x = x^y;
y = x^y;
x = x^y;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章