LeetCode 506 相對名次

2021-10-07 03:18:24 字數 1815 閱讀 4717

class

solution

:def

findrelativeranks

(self, nums: list[

int])-

> list[

str]

:

n =len(nums)

# 陣列長度

ans =[0

]*n # 結果

dt =

# 雜湊, 記錄每個元素開始所在的位置

for i in

range

(n):

dt[nums[i]

]= i

#nums.sort()

self.qsort(nums,

0,n-1)

# 快速排序

if n==0:

return

none

for i in

range

(n):

if i ==0:

ans[dt[nums[i]]]

="gold medal"

elif i ==1:

ans[dt[nums[i]]]

="silver medal"

elif i ==2:

ans[dt[nums[i]]]

="bronze medal"

else

: ans[dt[nums[i]]]

=str

((i+1)

)# 字串

return ans

defqsort

(self,nums, low, hight)

:if low < hight:

ans = self.qspass(nums,low,hight)

# 關鍵部分,一趟快速排序

self.qsort(nums,low,ans-1)

# 左邊的子表

self.qsort(nums,ans+

1,hight)

# 右邊的子表

defqspass

(self, nums, low, hight)

:'''把大於key的放在左子表,小的放在右子表'''

key = nums[low]

# 以第一位作為關鍵字

while low < hight:

# 從hight往low走,找到大於key的,就交換

while low<= key:

hight -=

1if low < hight:

#self.swap(nums, low, hight)

nums[low]

= nums[hight]

low +=

1# 從low往hight走,遇到比key小的,和hight交換

while low < hight and nums[low]

>= key:

low+=

1if low#self.swap(nums, low,hight)

nums[hight]

= nums[low]

hight -=

1 nums[low]

= key # 把key放在low==hight的位置

return low # 返回 key,關鍵字的小標

Leetcode 506相對名次

給出n名運動員的成績,找出他們的相對名次並授予前三名對應的獎牌。前三名運動員將會被分別授予 金牌 銀牌 和 銅牌 gold medal silver medal bronze medal 注 分數越高的選手,排名越靠前。示例 1 輸入 5,4,3,2,1 輸出 gold medal silver m...

LeetCode506 相對名次

給出 n 名運動員的成績,找出他們的相對名次並授予前三名對應的獎牌。前三名運動員將會被分別授予 金牌 銀牌 和 銅牌 gold medal silver medal bronze medal 注 分數越高的選手,排名越靠前。示例 1 n 是乙個正整數並且不會超過 10000。所有運動員的成績都不相同...

Leetcode506 相對名次 排序 雜湊

給出 n 名運動員的成績,找出他們的相對名次並授予前三名對應的獎牌。前三名運動員將會被分別授予 金牌 銀牌 和 銅牌 gold medal silver medal bronze medal note the returned array must be malloced,assume caller...