iT邦幫忙

2023 iThome 鐵人賽

DAY 25
0
Mobile Development

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

Day 25 - 169. Majority Element - 解法與複雜度分析 - LeetCode in Swift

  • 分享至 

  • xImage
  •  

hero

基本資訊

演算法與資料結構:

  • Hash Table

題意

給予一個陣列,找出其中的主要元素。

主要元素的定義是,出現次數為 n/2 次,而這個主要元素必然會存在。

想法

  • 依序走訪紀錄出現次數
  • 當出現次數超過個數的一半時就中斷走訪回傳結果

程式碼

class Solution {
    func majorityElement(_ nums: [Int]) -> Int {
        var map = [Int: Int]()
        
        for num in nums {
            let count = (map[num] ?? 0) + 1
            if count > (nums.count / 2) {
                return num
            }
            map[num] = count
        }
        
        return -1
    }
}

複雜度分析

令 n 為陣列的長度

Big O 說明
時間複雜度 O(n) 線性走訪
空間複雜度 O(n) Hash table

執行結果

  • Runtime: 86 ms (Beats 88.37%)
  • Memory: 15.84 MB (Beats 30.23%)

結語

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

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


上一篇
Day 24 - 1480. Running Sum of 1d Array - 解法與複雜度分析 - LeetCode in Swift
下一篇
Day 26 - 993. Cousins in Binary Tree - 解法與複雜度分析 - LeetCode in Swift
系列文
30天用 Swift 解 LeetCode 問題30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言