↓快轉到主要內容
  1. LeetCode/

LeetCode 506: Relative Ranks

·1 分鐘· ·
LeetCode Easy Array Sorting Heap-Priority-Queue
Wei Yi Chung
作者
Wei Yi Chung
Working at the contributing of open source, distributed systems, and data engineering.
目錄

基本資料
#

難易度: easy 第一次嘗試:2022-08-25

  • 提交紀錄:Accepted ×2

解題思路
#

把 index 按分數由大到小排序(或用 max-heap 依序彈出,Heap),第 r 名(從 0 開始)是前三名就給 Gold Medal、Silver Medal、Bronze Medal,否則給 str(r + 1),寫回原本的 index。

我的解法
#

class Solution:
    def findRelativeRanks(self, score: List[int]) -> List[str]:
        medals = ["Gold Medal", "Silver Medal", "Bronze Medal"]
        res = [""] * len(score)
        order = sorted(range(len(score)), key=lambda i: -score[i])
        for r, i in enumerate(order):
            res[i] = medals[r] if r < 3 else str(r + 1)
        return res

複雜度
#

時間 O(n log n),空間 O(n)。

要特別避免的錯誤
#

  • 答案要放回原本的位置,不是排序後的順序。

面試口說整理
#

我把 index 按分數由高到低排序,依名次給獎牌或名次字串,寫回原本的 index。時間 O(n log n)。

相關文章

LeetCode 414: Third Maximum Number
·1 分鐘
LeetCode Easy Array Sorting
LeetCode 414 解題筆記:記錄三個不同的最大值,重複的數跳過;不到三個不同的數就回傳最大值
LeetCode 455: Assign Cookies
·1 分鐘
LeetCode Easy Array Two-Pointers Greedy Sorting
LeetCode 455 解題筆記:小孩和餅乾都排序,用最小的、夠大的餅乾滿足最小的小孩;兩個指標各走一次
LeetCode 217: Contains Duplicate
·1 分鐘
LeetCode Easy Array Hash-Table Sorting
LeetCode 217 解題筆記:轉成 set 後長度變短就代表有重複
LeetCode 169: Majority Element
·1 分鐘
LeetCode Easy Array Hash-Table Divide-and-Conquer Sorting
LeetCode 169 解題筆記:Boyer-Moore 投票,不同的數兩兩抵消,最後留下的就是出現超過一半的那個
LeetCode 500: Keyboard Row
·1 分鐘
LeetCode Easy Array Hash-Table String
LeetCode 500 解題筆記:鍵盤的三列各做成集合,單字轉小寫後的字元集合是某一列的子集就保留
LeetCode 485: Max Consecutive Ones
·1 分鐘
LeetCode Easy Array
LeetCode 485 解題筆記:遇到 1 就把目前的長度加一,遇到 0 就歸零,過程中記錄最大值