这篇文章主要为大家展示了“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如何找出数组中出现次数超过一半的数字”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。