鱼C论坛

 找回密码
 立即注册
查看: 6529|回复: 16

[技术交流] 11 - 摩尔投票法而非摩尔庄园

[复制链接]
发表于 2021-6-2 19:54:12 | 显示全部楼层 |阅读模式
购买主题 已有 13 人购买  本主题需向作者支付 5 鱼币 才能浏览

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-3 14:24:21 | 显示全部楼层
我自己造的原始数据  一个过半的都没有

  1. import random,copy
  2. for idx in range(20):
  3.     lst=[random.choice(range(10)) for x in range(random.randint(20,30))]
  4.     a=copy.deepcopy(lst)
  5.     b=list(set(lst))
  6.     z={}
  7.     for x in b:
  8.         z[x]=round(a.count(x)/len(a)*100,2)
  9.     z_order=sorted(z.items(), key = lambda kv:(kv[1]))   
  10.     if float(z_order[-1][1])>50:
  11.         print(a,"相关数是{:4d}  占比:{:.2f}".format(z_order[-1][0],z_order[-1][1]))   
  12.     else:   
  13.          print(a,"没有相关数")   
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-3 18:57:42 | 显示全部楼层
wp231957 发表于 2021-6-3 14:24
我自己造的原始数据  一个过半的都没有

不错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-10 09:05:01 | 显示全部楼层
爱小师妹
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-23 15:03:35 | 显示全部楼层
li = eval(input('请输入列表:'))
K = [li[0], 0]
for i in li:
    if i == K[0]:
        K[1] += 1
    elif K[1] == 0:
        K[0] = i
        K[1] = 1
    else:
        K[1] -= 1
print(f'该列表的主要元素为{K[0]}') if li.count(K[0]) > len(li) / 2 else print('该列表无主要元素')

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-27 21:08:06 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-24 17:17:40 | 显示全部楼层
讲的太好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-29 16:44:17 | 显示全部楼层
.

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-2 15:32:08 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-5 22:41:01 | 显示全部楼层
testlist = [2, 4, 3, 4, 6, 2, 4, 3, 4, 4, 4]
count = 0
preelement = 0
for eachelement in testlist:
    if count == 0:
        preelement = eachelement
        count += 1
    elif count != 0:
        if eachelement != preelement:
            count -= 1
        if eachelement == preelement:
            count += 1
# 返回PK后的候选人preelement

# 重新开始计数,判断候选人preelement占比是否超过一半
count = 0
for eachelement in testlist:
    if eachelement == preelement:
        count += 1
if count > len(testlist)/2:
    print('%s是列表中的主要元素' % preelement)
else:
    print('没有占比超过一半的元素')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-7 22:11:07 | 显示全部楼层
答案呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-11 17:43:47 | 显示全部楼层
123
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-10 23:12:43 | 显示全部楼层
如果不用摩尔投票法的话,可以这样做吗?
nums = [1, 2, 3]  
new_nums = list(set(nums))  
for i in new_nums:  
    if nums.count(i) > len(nums) / 2:  
        print(f"{i}是主要元素")  
        break  
else:  
    print("不存在主要元素")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-12 15:09:00 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-14 14:04:41 | 显示全部楼层
nums = [2,4,4,2,3,6,2]
count = 0
major = 0

for each in nums:
    if count == 0:
        major = each
    if each == major:
        count += 1
    else:
        count -= 1
if nums.count(major) > len(nums)/2:
    print('主要元素{}'.format(major))
else:
    print('不存在主要元素')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-2 22:31:09 | 显示全部楼层
沙发
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-2 08:59:15 | 显示全部楼层
学习一下下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 18:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表