码迷,mamicode.com
首页 > 编程语言 > 详细

给你一个长度为 n 的数组,其中只有一个数字出现了大于等于 n/2 次,问如何使用优秀的 时空复杂度快速找到这个数字。

时间:2020-07-26 19:17:42      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:span   实现   复杂度   base   元素   遇到   thml   大于等于   优秀   

思路一:

如果我们把众数记为 +1,遇到相同数就加1,遇到不同的数就减1,把其他数记为 -1,将它们全部加起来,显然和大于 0,从结果本身我们可以看出众数比其他数多。

使用for循环取值几个数也许就查找到了。

方法二:哈希表
使用hashtab 实现计数也行。

我们使用哈希映射(HashMap)来存储每个元素以及出现的次数。对于哈希映射中的每个键值对,键表示一个元素,值表示该元素出现的次数。

 

给你一个长度为 n 的数组,其中只有一个数字出现了大于等于 n/2 次,问如何使用优秀的 时空复杂度快速找到这个数字。

标签:span   实现   复杂度   base   元素   遇到   thml   大于等于   优秀   

原文地址:https://www.cnblogs.com/forgo/p/13380125.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!