博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Algorithms
阅读量:4576 次
发布时间:2019-06-08

本文共 506 字,大约阅读时间需要 1 分钟。

()

'''在O(n)时间复杂度,O(1)空间复杂度内,判断是否有候选人的得票数过半

该算法在运行过程中,需要两个临时变量c和t,c记录当前可能得票数过半的候选人编号,t记录该候选人的净超出次数。对于c而言,除了可以等于1~m中的任何值之外,还有另一种状态,我们把其叫做未知状态,用于表示当前任何候选人的得票数都不可能过半(程序中可以用0,或者-1表示),t的最小值为0,程序开始运行时c为未知状态(c=0),t=0,然后按照如下方法处理投票数组v。

  • 对于v[i](1<=i<=n),如果c此时为未知状态,则c=v[i],t=1,递增i。
  • 如果c==v[i],++t,递增i。
  • 如果c!=v[i],--t,如果t==0,将c置为未知状态,递增i。
  • 所有投票处理完毕后,如果c为未知状态,则说明不存在任何候选人的得票数过半,否则重新遍历数组v,统计候选人c的实际得票总数,如果c的得票数确实过半,则c就是最终结果。'''

如果有人票数过半,c最终状态一定大于0.

如果c最终大于0, 不一定有人票数过半。

 

转载于:https://www.cnblogs.com/XingyingLiu/p/5095752.html

你可能感兴趣的文章
dubbo 面试题
查看>>
android应用proguard混淆打包
查看>>
Laravel Create Facade
查看>>
【iOS系列】-UIButton的非常规使用
查看>>
理解PHP面向对象三大特性
查看>>
json学习系列(6)JSONObject和JSONArray是JDK的集合部分延伸
查看>>
TPS和QPS的区别
查看>>
day 016 面向对象---类与类的关系
查看>>
Java处理乱码问题
查看>>
冒泡排序
查看>>
常用NFS mount选项介绍
查看>>
Nand Flash与Nor
查看>>
一个非常好用的前端JS框架-AngularJS(一)
查看>>
Java EE 学习(7):IDEA + maven + spring 搭建 web(3)- 配置数据库
查看>>
webpack打包时修改package.json的版本号,并输出相关版本
查看>>
Redis常用数据结构及使用场景
查看>>
Linux下Java程序运行环境搭建及相关配置【JDK+Tomcat+MySQL】
查看>>
SpringClound微服务整体架构图
查看>>
MySql一条查询语句&更新语句执行流程
查看>>
GPE监控预警系统搭建--Grafana+Prometheus+Exporter
查看>>