在Python中列出获得多数票的候选人的程序

在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<size of nums时,执行以下操作
    • 如果nums中nums[i]的频率> (n / 3),那么
      • 将nums[i]插入到ans中
    • i := i+ (n / 3)
  • 按排序顺序返回ans

请看以下实现以更好地理解 –

更多Python相关文章,请阅读:Python 教程

例子

  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]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程