有限制条件的查找法汇总
2021-07-09 本文已影响0人
愿你我皆是黑马
摩尔投票查找:用于查找出现超过一半的元素
- 原理: A军队去杀BCD联盟的敌人,假设都是以一换一。最后留下来的还是A军队。说明A军队的人数超过了总数的一半。
- 模版代码
- 该人在for循环杀敌交友的个数 :每次初始化都为0,不用单选该值为-1的情况,因为假设最多的人是指向下一个人的,下一次循环必定加一。
def 摩尔投票查找(所有军队的人): 假设最多的人 = 所有军队的人[0] 该人在for循环杀敌交友的个数 = 0 for 第i个人 in range(所有军队的人的个数): if 所有军队的人[第i个人] == 假设最多的人: 该人在for循环杀敌交友的个数++ else: 该人在for循环杀敌交友的个数-- if 该人在for循环杀敌交友的个数==0: 假设最多的人 = 所有军队的人[第i个人+1] return 假设最多的人