Python程式:按排名從高到低排列隊伍最終排名
假設我們有一個名為votes的字串列表,其中每個條目都小寫字母表示,它們按從最高到最低的優先順序順序代表對候選人的投票。候選人的排名首先取決於其獲得的最高優先順序投票數量。如果出現平局,我們將檢查其獲得的次高優先順序投票數量,依此類推。如果仍然存在平局,則將按字母順序排列。因此,我們必須找到隊伍的最終排名,按排名從高到低排列。
因此,如果輸入類似於votes = ["zyx", "zxy", "xyz"],則輸出將為"zxy",因為z獲得了最多的最高優先順序投票,因此排名第一。然後x獲得了第二多的最高優先順序投票,而y沒有獲得任何最高優先順序投票。
為了解決這個問題,我們將遵循以下步驟:
- count := votes中字串的長度
- cand := 一個空對映,其中每個鍵將是一個大小為count的列表,並且最初它們都填充為0
- 對於votes中的每個v,執行:
- 對於v中的每個索引i和值c,執行:
- 將cand[c, i]增加1
- 根據值以降序對cand專案進行排序,當值相同時,按字母順序排序它們
- 透過連線排序後的元素返回一個字串。
- 對於v中的每個索引i和值c,執行:
讓我們看看下面的實現,以便更好地理解:
示例
from collections import defaultdict class Solution: def solve(self, votes): count = len(votes[0]) cand = defaultdict(lambda: [0] * count) for v in votes: for i, c in enumerate(v): cand[c][i] += 1 return "".join(sorted(cand.keys(), key=lambda x: (cand[x], -ord(x)), reverse=True)) ob = Solution() votes = ["zyx", "zxy", "xyz"] print(ob.solve(votes))
輸入
["zyx", "zxy", "xyz"]
輸出
zxy
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP