在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)
- 如果nums中nums[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]