重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要为大家展示了“LeetCode如何找出数组中出现次数超过一半的数字”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“LeetCode如何找出数组中出现次数超过一半的数字”这篇文章吧。
创新互联网站设计,为客户量身定制各类网站建设业务,包括企业型、电子商务型、成都响应式网站建设、行业门户型等各类网站,实战经验丰富,成功案例众多。以客户利益为出发点,创新互联网站制作为客户规划、按需求定制制作符合企业需求、带有营销价值的网络建站方案认真对待每一个客户,我们不用口头的语言来吹擂我们的优秀,成百上千家的成功案例见证着我们的成长。
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
1 <= 数组长度 <= 50000
输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输出: 2
[1,2,3]
, 利用此方法得到的最终候选者为 3, 但它并不是多数元素, 只是恰好最后一个被选出来的候选者而已.O(N)
O(1)
class Solution:
def majorityElement(self, nums: List[int]) -> int:
# 初始化候选者和计数
res = nums[0]
cnt = 1
for x in nums[1:]:
if x == res:
# 当前元素等于候选者, 计数值+1
cnt += 1
else:
# 否则计数值-1
cnt -= 1
if cnt < 0:
# 如果计数值小于0的话, 就说明之前保存的候选者现在被淘汰了, 将当前元素变为新的候选者, 并重置计数值为1
res = x
cnt = 1
return res
以上是“LeetCode如何找出数组中出现次数超过一半的数字”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!