Python編程題22--只出現一次的數字


題目

給定一個非空整數列表,除了某個元素只出現一次以外,其余每個元素均出現兩次。請找出那個只出現了一次的元素。

注意:除了定義的返回結果變量外,不允許使用額外空間,並且不允許使用編程語言的內置函數。

例如:

給定一個列表:[4, 1, 2, 1, 2],返回結果:4

給定一個列表:[2, 2, 1],返回結果:1

實現思路

  • 通過 位運算 來實現,設置一個返回值res,默認值為0
  • 遍歷列表元素,每次均與res進行異或運算
  • 列表中只有1個元素出現一次,其余元素均出現兩次,相同元素異或的結果為0,所以最終的結果res就是這個只出現一次的元素

在二進制的異或運算中,例如a=12,b=7,那么a異或b的結果c計算如下:

a = 0 0 0 0 1 1 0 0
b = 0 0 0 0 0 1 1 1
c = 0 0 0 0 1 0 1 1 (相同位的值為0,不同為1)

所以我們可以看出:0異或任一個數a,其結果為 a;任一數a異或自己,也就是 a異或a,其結果為 0

代碼實現

def singleNumber(nums):
    res = 0
    for num in nums: 
        res = res ^ num
    return res

更多Python編程題,等你來挑戰:Python編程題匯總(持續更新中……)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM