vocus logo

方格子 vocus

高手競技 比賽排名頒獎(排序應用) Leetcode_#506

更新 發佈閱讀 3 分鐘

題目敘述

輸入給定一個整數陣列,分別代表每位運動員在比賽中的成績

分數最高的給予金牌"Gold Medal"
分數次高的給予金牌"Silver Medal"
分數第三高的給予金牌"Bronze Medal"
剩餘的名次依照順序給予"4", "5", ..., "n" 的編號

輸出時以字串陣列返回答案


原本的英文題目敘述


測試範例

Example 1:

Input: score = [5,4,3,2,1]
Output: ["Gold Medal","Silver Medal","Bronze Medal","4","5"]
Explanation: The placements are [1st, 2nd, 3rd, 4th, 5th].

Example 2:

Input: score = [10,3,8,9,4]
Output: ["Gold Medal","5","Bronze Medal","Silver Medal","4"]
Explanation: The placements are [1st, 5th, 3rd, 2nd, 4th].

約束條件

Constraints:

  • n == score.length

令n代表分數陣列的長度。

  • 1 <= n <= 10^4

n介於 1 ~ 一萬之間。

  • 0 <= score[i] <= 10^6

每位選手的分數介於0~一百萬之間。

  • All the values in score are unique.

每位選手的分數都不同,不會有同分的情況


演算法 排序

這題滿直覺的,題目已經保證不會有同分的情況

因此,直接對分數進行排序
冠軍拿金牌,亞軍拿銀牌,季軍拿銅牌,剩下的名次拿到對應的數字即可。


程式碼 排序

class Solution:
def findRelativeRanks(self, nums):

# 對分數由大到小進行排序
place = sorted(nums, reverse = True)

# 依照名次給對應的獎牌
prize = ["Gold Medal", "Silver Medal", "Bronze Medal"] + list(map(str, range(4, len(nums) + 1)))

# 依照每個選手的排名進行頒獎
return map(dict(zip(place, prize)).get, nums)

複雜度分析

時間複雜度: O(n log n)

n個分數進行排序,所需時間為O( n log n)。


空間複雜度: O(n)

place 排名陣列, prize獎牌陣列, 和臨時的mapping table所需空間皆為 O(n)。


關鍵知識點

題目已經保證不會有同分的情況

因此,直接對分數進行排序

冠軍拿金牌,亞軍拿銀牌,季軍拿銅牌,剩下的名次拿到對應的數字即可。


Reference

[1] Relative Ranks - LeetCode

留言
avatar-img
小松鼠的演算法樂園
99會員
428內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
2024/10/06
題目敘述 Rank Transform of an Array 給定一個陣列arr,請根據數字的大小給予序號,序號值介於1~len( set(arr) )之間。 最大的數字給予最大的序號。 次大的數字給予次大的序號。 ...依此類推 最小的數字給予最小的序號1。
Thumbnail
2024/10/06
題目敘述 Rank Transform of an Array 給定一個陣列arr,請根據數字的大小給予序號,序號值介於1~len( set(arr) )之間。 最大的數字給予最大的序號。 次大的數字給予次大的序號。 ...依此類推 最小的數字給予最小的序號1。
Thumbnail
2024/10/01
題目敘述 Check If Array Pairs Are Divisible by k 給定一個長度為偶數的整數陣列arr,和一個整數k 。 我們想把陣列元素兩兩一組組成pair,使得每個pair的總和可以被k整除。 如果做得到,返回True。 如果不行,返回False。
Thumbnail
2024/10/01
題目敘述 Check If Array Pairs Are Divisible by k 給定一個長度為偶數的整數陣列arr,和一個整數k 。 我們想把陣列元素兩兩一組組成pair,使得每個pair的總和可以被k整除。 如果做得到,返回True。 如果不行,返回False。
Thumbnail
2024/09/29
My Calendar II 給定一個行事曆的class定義和行程安排的介面。 請完成下列function 1.建構子MyCalendarTwo() 2.boolean book(int start, int end) 在行事曆加入一項新行程,起始時間為start, 結束時間為end。
Thumbnail
2024/09/29
My Calendar II 給定一個行事曆的class定義和行程安排的介面。 請完成下列function 1.建構子MyCalendarTwo() 2.boolean book(int start, int end) 在行事曆加入一項新行程,起始時間為start, 結束時間為end。
Thumbnail
看更多
你可能也想看
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
第一局﹅21:17 第二局﹅18:21 前兩局以合作收,歸零搶三 第三局﹅決勝局 舉凡高手對弈,信念﹅實力﹅運氣缺一不可 決勝局一開始,麟洋配4:2暫時領先 但對手的實力不容小觑,硬是從落後2拉至5:5(呼~) 不僅場上選手不住噗通噗通,觀眾也是噗通噗通 (心血管,心臟功能健康真的重要
Thumbnail
第一局﹅21:17 第二局﹅18:21 前兩局以合作收,歸零搶三 第三局﹅決勝局 舉凡高手對弈,信念﹅實力﹅運氣缺一不可 決勝局一開始,麟洋配4:2暫時領先 但對手的實力不容小觑,硬是從落後2拉至5:5(呼~) 不僅場上選手不住噗通噗通,觀眾也是噗通噗通 (心血管,心臟功能健康真的重要
Thumbnail
看到奧運選手為了比賽而努力訓練的畫面,深深感到自己的不足,決定要更認真努力地參加應用軟體競賽,並在今年努力成長,讓生活更加充實。
Thumbnail
看到奧運選手為了比賽而努力訓練的畫面,深深感到自己的不足,決定要更認真努力地參加應用軟體競賽,並在今年努力成長,讓生活更加充實。
Thumbnail
好好累積經驗&磨練實力 我們一起對6段 發起衝擊吧✌️
Thumbnail
好好累積經驗&磨練實力 我們一起對6段 發起衝擊吧✌️
Thumbnail
賽事相當緊張刺激,究竟是誰會拿到第一呢?
Thumbnail
賽事相當緊張刺激,究竟是誰會拿到第一呢?
Thumbnail
題目敘述 輸入給定一個整數陣列,分別代表每位運動員在比賽中的成績。 分數最高的給予金牌"Gold Medal" 分數次高的給予金牌"Silver Medal" 分數第三高的給予金牌"Bronze Medal" 剩餘的名次依照順序給予"4", "5", ..., "n" 的編號。 輸出時以字串
Thumbnail
題目敘述 輸入給定一個整數陣列,分別代表每位運動員在比賽中的成績。 分數最高的給予金牌"Gold Medal" 分數次高的給予金牌"Silver Medal" 分數第三高的給予金牌"Bronze Medal" 剩餘的名次依照順序給予"4", "5", ..., "n" 的編號。 輸出時以字串
Thumbnail
企排明星賽觀後感
Thumbnail
企排明星賽觀後感
Thumbnail
歐冠賽事分為三個階段:外圍賽進行三輪,附加賽進行一輪,然後是小組賽和四輪淘汰賽。 總共有32支球隊參賽,分為八組,每組四隊。比賽勝利可獲得3分,小組賽結束後積分最高的兩隊晉級淘汰賽。
Thumbnail
歐冠賽事分為三個階段:外圍賽進行三輪,附加賽進行一輪,然後是小組賽和四輪淘汰賽。 總共有32支球隊參賽,分為八組,每組四隊。比賽勝利可獲得3分,小組賽結束後積分最高的兩隊晉級淘汰賽。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News