Python程式:列出獲得多數票的候選人


假設我們有一個名為nums的數字列表,其中每個數字代表對某個候選人的投票。我們必須找到獲得超過floor(n/3)票的候選人的ID,並按非遞減順序排列。

因此,如果輸入類似於nums = [3, 2, 6, 6, 6, 6, 7, 7, 7, 7, 7],則輸出將為[6, 7],因為6和7獲得了40%的票數。

為了解決這個問題,我們將遵循以下步驟:

  • ans := 一個新的空集合
  • 對列表nums進行排序
  • i := 0
  • n := nums的大小
  • 當i < nums的大小時,執行:
    • 如果nums[i]在nums中的出現次數 > (n / 3),則
      • 將nums[i]插入ans
    • i := i + (n / 3)
  • 按排序順序返回ans

讓我們看下面的實現來更好地理解:

示例

線上演示

class Solution:
   def solve(self, nums):
      ans = set([])
      nums.sort()
      i = 0
      n = len(nums)
      while i < len(nums):
         if nums.count(nums[i]) > n // 3:
            ans.add(nums[i])
         i += n // 3
      return sorted(list(ans))
ob = Solution()
nums = [3, 2, 6, 6, 6, 6, 7, 7, 7, 7, 7]
print(ob.solve(nums))

輸入

[3, 2, 6, 6, 6, 6, 7, 7, 7, 7, 7]

輸出

[6, 7]

更新於:2020年12月2日

401 次檢視

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.