offer29--数组中出现次数超过一半的数字
来源:互联网 发布:ubuntu服务器安装java 编辑:程序博客网 时间:2024/05/16 23:34
#coding=utf-8
'''offer29--最开始保存两个数值:数组中的一个数字以及它出现的次数,然后遍历,如果下一个数字等于这个数字,那么次数加一,如果不等,次数减一,当次数等于0的时候,在下一个数字的时候重新复制新的数字以及出现的次数置为1,直到进行到最后,然后再验证最后留下的数字是否出现次数超过一半,因为可能前面的次数依次抵消掉,最后一个数字就直接是保留下来的数字,但是出现次数不一定超过一半。'''
defMoreThanhalf(numbers):
l=len(numbers)
if numbers==None or l<=0:
return 0
result=numbers[0]
time=1
for i in range(1,l):
if time==0:
result=numbers[i]
time=1
elif numbers[i]==result:
time+=1
else:
time-=1
if not Checkmorehalf(numbers,l,time):
result=0
return result
defCheckmorehalf(numbers,l,time):
time>l/2
return True
if__name__ == '__main__':
list=[1,1,1,1,1,3,4,5,3,3,3,3,3,3,3,6]
s=MoreThanhalf(list)
print s
- 剑指Offer29数组中出现次数超过一半的数字
- 剑指offer29:数组中出现次数超过一半的数字
- 剑指offer29:数组中出现次数超过一半的数字
- offer29--数组中出现次数超过一半的数字
- 剑指offer29题,牛客网中“数组中出现次数超过一半的数字”
- 【面试题】剑指offer29--数组中出现次数超过一半的数字
- 剑指offer29--数组中出现超过一半的数字
- 数组中超过出现次数超过一半的数字
- 74.数组中超过出现次数超过一半的数字
- 74 数组中超过出现次数超过一半的数字
- 【数组4】数组中出现次数超过一半的数字
- 数组4:数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字
- 找出数组中出现次数超过长度一半的数字
- 2-数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字[算法]
- 数组中出现次数超过一半的数字
- python map及reduce用法
- Nginx实现虚拟机(2.基于域名的虚拟主机)
- 关于javax.servlet找不到问题
- grub 引导debian 8.6
- Verilog中testbench的设计,文件读取和写入操作
- offer29--数组中出现次数超过一半的数字
- linux中处理信号问题
- bzoj 2302: [HAOI2011]Problem c dp+数学
- Druid连接池配置(java无框架)
- LeetCode Longest Substring Without Repeating Characters
- 0002_程序员戒手淫之论手淫对人生运势的不良影响
- 无题
- hdu 5781(期望dp)
- 结合redis设计与实现的redis源码学习-2-SDS(简单动态字符串)