Leetcode Note: Go - Relative Ranks
Relative Ranks - LeetCode
https://leetcode.com/problems/relative-ranks/
- Go 言語で取り組んだメモ
所感
- int 配列 score が渡されるので、値の大きい順に 1 - 3 番目までは所定の文字列、 4 番目以降はその n 番目という数値として、これらを string 配列として return する
- score として渡ってくる数値は unique であることを保証するものとする
回答
Golang 100% simple solution - LeetCode Discuss
https://leetcode.com/problems/relative-ranks/discuss/561738/Golang-100-simple-solution
type MyInt struct {
Val int
Index int
}
func findRelativeRanks(nums []int) []string {
athletes := make([]MyInt, len(nums))
for i, num := range nums {
athletes[i].Index=i
athletes[i].Val=num
}
sort.Slice(athletes, func(i, j int) bool {
return athletes[i].Val>athletes[j].Val
})
rank := make([]string, len(nums))
for i, athlete := range athletes {
switch i {
case 0:
rank[athlete.Index]="Gold Medal"
case 1:
rank[athlete.Index]="Silver Medal"
case 2:
rank[athlete.Index]="Bronze Medal"
default:
rank[athlete.Index] = strconv.Itoa(i+1)
}
}
return rank
}
- sort 使って switch で対応する文字列をセットアップする