前往
大廳
主題

LeetCode - 506. Relative Ranks 解題心得

Not In My Back Yard | 2020-11-07 00:00:04 | 巴幣 2 | 人氣 149

題目連結:


題目意譯:
給定 N 位運動員的成績,找到他們的相對排名以及其中三個分數最高的人,那三人將會被頒予獎牌:金牌("Gold Medal")、銀牌("Silver Medal")以及銅牌("Bronze Medal")

注:
N 是一個正整數且不超過 10000。
所有運動員的成績保證相異。



範例測資:
範例 1:
輸入: [5, 4, 3, 2, 1]
輸出: ["Gold Medal", "Silver Medal", "Bronze Medal", "4", "5"]
解釋: 前三個運動員占了前三高的分數,因此他們分別獲得金牌、銀牌以及銅牌。對於右邊兩位運動員,你只需要根據他們的分數輸出相對排名。



解題思維:
先將每位運動員的成績與其成績在陣列中的位置包在一起(使用結構(Struct)等等),然後按照成績大小由大排到小。

所以三個最高的人就在排序後的陣列最前面,分別頒予他們金牌、銀牌、銅牌。剩下的人就依據排名賦予他們數字。因為原本的索引值還存著,所以可以將這些數字或是字串放到原本那些運動員之成績在的陣列位置。將其回傳即可。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作