iT邦幫忙

2023 iThome 鐵人賽

DAY 21
0
Mobile Development

30天用 Swift 解 LeetCode 問題系列 第 21

Day 21 - 136. Single Number - 解法與複雜度分析 - LeetCode in Swift

  • 分享至 

  • xImage
  •  

hero

基本資訊

題意

給予一個非空的整數陣列 nums ,除了一個數字,剩下的所有數字都會重複一次。請回傳那個只出現一次的數字。

解法

會重複的數字都會出現兩次的話,就可以用 XOR 的方式來抵銷掉。

例如 2 ^ 2 這樣的運算的結果會等於 0 。

因此我們只要把所有的元素用 XOR 加總,加總的結果就會是唯一沒有重複的那個值。

程式碼

直接用 reduce 就可以了:

class Solution {
    func singleNumber(_ nums: [Int]) -> Int {
        return nums.reduce(0, ^)
    }
}

執行結果

  • Runtime: 100 ms (Beats 88.1%)
  • Memory: 14.7 MB (Beats 68.3%)

複雜度分析

令 n 為陣列的長度

Big O 說明
時間複雜度 O(n) 走過每一個元素
空間複雜度 O(1) 宣告變數給 reduce 用

結語

以上,就是今天的 LeetCode in Swift ,

如果有什麼問題和回饋歡迎留言一起討論,今天就到這裡,明天見!


上一篇
Day 20 - 543. Diameter of Binary Tree - 解法與複雜度分析 - LeetCode in Swift
下一篇
Day 22 - 525. Contiguous Array - 解法與複雜度分析 - LeetCode in Swift
系列文
30天用 Swift 解 LeetCode 問題30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言