給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。
說明:
你的演算法應該具有線性時間複雜度。 你可以不使用額外空間來實現嗎?
示例1:
輸入: [2,2,1]
輸出: 1
示例2:
輸入: [4,1,2,1,2]
輸出: 4
這個題首先可以想到使用棧,因為之前括號匹配題和這個相當像,用棧去匹配相同元素,最後沒有匹配到的就返回。這是乙個思路,但是只能減小一般的空間。最牛的方法是使用異或運算,可以這麼想,異或運算具有交換律和結合率的性質,因此可以想象先把陣列中的相同數字進行異或,那麼結果一定為0,最後異或那個唯一的數字,其結果就是它。所以只要將陣列中的所有數字進行異或,那麼結果一定是沒有成對的那個數字。
c++源**:
class
solution
};
python3源**:
class
solution
:def
singlenumber
(self, nums)
:"""
:type nums: list[int]
:rtype: int
"""b =
0for i in nums:
b = b ^ i
return b
leetcode演算法 136 只出現一次的數字
所有題目源 git位址 題目給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?示例 1 輸入 2 2,1 輸出 1示例 2 輸入 4 1,2 1,2 輸出 4方案 的底層實現就是...
LeetCode 第136題 只出現一次的數
題目 給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?示例 1 輸入 2,2,1 輸出 1 示例 2 輸入 4,1,2,1,2 輸出 4 package leetcode 20...
LeetCode136題 只出現一次的數字
給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?根據題目描述,由於加上了時間複雜度必須是o n 並且空間複雜度為o 1 的條件,因此不能用排序方法,也不能使用map資料結構。func...