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 で対応する文字列をセットアップする