LeetCode每日一題:只出現一次的數字(No.136)

胖宅老鼠發表於2019-03-14

題目:只出現一次的數字


   給定一個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。
   說明:你的演算法應該具有線性時間複雜度。 你可以不使用額外空間來實現嗎?
複製程式碼

示例:


輸入: [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;
 }
}複製程式碼

相關文章