給予一個非空的整數陣列 nums ,除了一個數字,剩下的所有數字都會重複一次。請回傳那個只出現一次的數字。
會重複的數字都會出現兩次的話,就可以用 XOR 的方式來抵銷掉。
例如 2 ^ 2
這樣的運算的結果會等於 0 。
因此我們只要把所有的元素用 XOR 加總,加總的結果就會是唯一沒有重複的那個值。
直接用 reduce 就可以了:
class Solution {
func singleNumber(_ nums: [Int]) -> Int {
return nums.reduce(0, ^)
}
}
令 n 為陣列的長度
Big O | 說明 | |
---|---|---|
時間複雜度 | O(n) | 走過每一個元素 |
空間複雜度 | O(1) | 宣告變數給 reduce 用 |
以上,就是今天的 LeetCode in Swift ,
如果有什麼問題和回饋歡迎留言一起討論,今天就到這裡,明天見!