題目:只出現一次的數字
給定一個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。
說明:你的演算法應該具有線性時間複雜度。 你可以不使用額外空間來實現嗎?
複製程式碼
示例:
輸入: [2,2,1]
輸出: 1
輸入: [4,1,2,1,2]
輸出: 4
複製程式碼
思考:
使用異或,相同為0不同為1。
3^3=0:二進位制:0000 0011
異或:0000 0011
結果:0000 0000
4^1=5: 二進位制:0000 0100
異或:0000 0001
結果:0000 0101
異或性質: a^a=0
0^a=a
a^b^c=a^c^b
所以迴圈遍歷陣列,與0異或,最終的值就是隻出現一次的數字。
複製程式碼
實現:
class Solution {
public int singleNumber(int[] nums) {
int result = 0;
for(int i = 0;i < nums.length;i++){
result = nums[i] ^ result;
}
return result;
}
}複製程式碼