刷題順序是按照LeetCode的算法面試題匯總進(jìn)行的.
給定一個(gè)非空整數(shù)數(shù)組压鉴,除了某個(gè)元素只出現(xiàn)一次以外,其余每個(gè)元素均出現(xiàn)兩次末捣。找出那個(gè)只出現(xiàn)了一次的元素坝辫。
說明:
你的算法應(yīng)該具有線性時(shí)間復(fù)雜度进每。 你可以不使用額外空間來實(shí)現(xiàn)嗎汹粤?
示例 1:
輸入: [2,2,1]
輸出: 1
示例 2:
輸入: [4,1,2,1,2]
輸出: 4
題目要求不使用額外的空間來實(shí)現(xiàn),所以使用位運(yùn)算符實(shí)現(xiàn)品追,關(guān)于位運(yùn)算符:
image.png
詳細(xì)的請(qǐng)看菜鳥教程中的解釋http://www.runoob.com/python/python-operators.html
代碼如下“
def single_num(nums: list) ->int:
a = 0
for i in nums:
a = a ^ i
return a
if __name__ == '__main__':
n = [2, 2, 1]
print(single_num(n))