鱼C论坛

 找回密码
 立即注册
查看: 3098|回复: 4

[已解决]众数问题(递归)

[复制链接]
发表于 2019-3-7 20:46:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
众数问题小弟在百度上找的大概核心思想为:中间数与2段数组分别比较。若中<左,即最大众数可能存在左端,将左端再进行2段分割(递归)直到 中 >  左为止。右端同理。
好,问题来了,小弟看不懂。
大佬最好能细细讲一下,小弟感激涕淋
最佳答案
2019-3-8 13:52:05
大概思路就是
先找到中间的数(前提是这些数是经过排序的),然后算出中间的数,并且算出它的重数,也就是它的个数,并且找到左边数和右边数的起始和终止界限
然后用重数与左边的数的个数比,如果重数小,那么左边递归,右边同理
举个例子
122 3333 44566
一共12个排序好的数,中间的数为3,它的重数为4,然后找出左边数的起始和终止界限,得到左边是从0~2,一共三个数
然后进行左边的递归判断,3的重数为4,很明显比左边的数还要大,于是,左边不需要递归(毕竟你个数都比左边的数还要多了,众数不可能在左边)
然后进行右边的递归判断,3的重数为4,右边的数比它大,递归右边(因为不确定右边是不是全部都为同一个数,因此需要递归判断)
思路差不多就是这样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-3-8 13:52:05 | 显示全部楼层    本楼为最佳答案   
大概思路就是
先找到中间的数(前提是这些数是经过排序的),然后算出中间的数,并且算出它的重数,也就是它的个数,并且找到左边数和右边数的起始和终止界限
然后用重数与左边的数的个数比,如果重数小,那么左边递归,右边同理
举个例子
122 3333 44566
一共12个排序好的数,中间的数为3,它的重数为4,然后找出左边数的起始和终止界限,得到左边是从0~2,一共三个数
然后进行左边的递归判断,3的重数为4,很明显比左边的数还要大,于是,左边不需要递归(毕竟你个数都比左边的数还要多了,众数不可能在左边)
然后进行右边的递归判断,3的重数为4,右边的数比它大,递归右边(因为不确定右边是不是全部都为同一个数,因此需要递归判断)
思路差不多就是这样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-8 23:31:47 | 显示全部楼层
暗pluto 发表于 2019-3-8 13:52
大概思路就是
先找到中间的数(前提是这些数是经过排序的),然后算出中间的数,并且算出它的重数,也就是 ...

skr~~~天才
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-9 00:34:07 | 显示全部楼层

方法不止我这一种,比如把排序也放在递归中,这样的化可以减少时间复杂度等
我也只是提供思路而已
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-10 12:46:17 | 显示全部楼层
暗pluto 发表于 2019-3-9 00:34
方法不止我这一种,比如把排序也放在递归中,这样的化可以减少时间复杂度等
我也只是提供思路而已

大佬谦虚了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 13:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表