社区
其它技术问题
帖子详情
如何从n个数中找出概率最大的一个?
sunny3106
2009-03-04 09:03:10
一个数组,n个数,如何从中挑选出出现概率最大的一个?
最大概率>50% 和 >10% 两种情况下。
我之能想到比较笨的方法,哪位高手给点指点?
...全文
404
14
打赏
收藏
如何从n个数中找出概率最大的一个?
一个数组,n个数,如何从中挑选出出现概率最大的一个? 最大概率>50% 和 >10% 两种情况下。 我之能想到比较笨的方法,哪位高手给点指点?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
陽洸膂珵
2009-06-01
打赏
举报
回复
帮顶!
xiaokunshuai
2009-03-23
打赏
举报
回复
每个元素设一个引用计数,每次判断时,对引用计数遍历就是了。
kostion
2009-03-11
打赏
举报
回复
i=0;j=0;
1,a[i]和a[i+1]比较,如果不等,i+=2,继续;如果相等a[j]=a[i];i+=2;j++;继续;直到所有数据比较完毕;
2,如果j==2或j==1,则a[0]为所求;
如果j>2,继续上面的操作
luxiaoxun
2009-03-11
打赏
举报
回复
[Quote=引用 4 楼 nineforever 的回复:]
概率大于50%时可以不用计数,时间O(n),空间O(1)
[/Quote]
和微软的发帖水王是不是一样的道理?
如果每次删除两个不同的元素(不管是否包含概率大于50%的),那么,在剩下的元素列表中,概率大于50%的出现的次数仍然超过总数的一半。
arong1234
2009-03-11
打赏
举报
回复
你这个优化有时还是必要的
[Quote=引用 9 楼 KevinYuen 的回复:]
引用 5 楼 oo 的回复:
大于50%可以这样:
i=0;j=0;
1,a[i]和a[i+1]比较,如果不等,i+=2,继续;如果相等a[j]=a[i];i+=2;j++;继续;直到所有数据比较完毕;
2,如果j==2或j==1,则a[0]为所求;
如果j>2,继续上面的操作(1)
那10%的呢?大概结果不只有一个两个,用遍历计数的方法能统一算法,在里面能做一些优化,比如给处理过的数量加个记录,如果处理过的数大于了总数,就退出,效率能高些,特别是重复数字…
[/Quote]
KevinYuen
2009-03-11
打赏
举报
回复
[Quote=引用 5 楼 oo 的回复:]
大于50%可以这样:
i=0;j=0;
1,a[i]和a[i+1]比较,如果不等,i+=2,继续;如果相等a[j]=a[i];i+=2;j++;继续;直到所有数据比较完毕;
2,如果j==2或j==1,则a[0]为所求;
如果j>2,继续上面的操作(1)
[/Quote]
那10%的呢?大概结果不只有一个两个,用遍历计数的方法能统一算法,在里面能做一些优化,比如给处理过的数量加个记录,如果处理过的数大于了总数,就退出,效率能高些,特别是重复数字越多的时候效率越高。
arong1234
2009-03-11
打赏
举报
回复
is it really better than counting the elements?
直接对元素计数还是应该比较好吧
[Quote=引用 5 楼 oo 的回复:]
大于50%可以这样:
i=0;j=0;
1,a[i]和a[i+1]比较,如果不等,i+=2,继续;如果相等a[j]=a[i];i+=2;j++;继续;直到所有数据比较完毕;
2,如果j==2或j==1,则a[0]为所求;
如果j>2,继续上面的操作(1)
[/Quote]
sunny3106
2009-03-11
打赏
举报
回复
是排序啦,拍完之后看中间那个,或者每10%的看,但是排序只能做到O(NlogN)
[Quote=引用 2 楼 fhtingtian 的回复:]
比较笨的办法是对数组里出现的每个元素计数吗
[/Quote]
猫已经找不回了
2009-03-05
打赏
举报
回复
[Quote=引用 5 楼 oo 的回复:]
大于50%可以这样:
i=0;j=0;
1,a[i]和a[i+1]比较,如果不等,i+=2,继续;如果相等a[j]=a[i];i+=2;j++;继续;直到所有数据比较完毕;
2,如果j==2或j==1,则a[0]为所求;
如果j>2,继续上面的操作(1)
[/Quote]
学习了..
oo
2009-03-05
打赏
举报
回复
大于50%可以这样:
i=0;j=0;
1,a[i]和a[i+1]比较,如果不等,i+=2,继续;如果相等a[j]=a[i];i+=2;j++;继续;直到所有数据比较完毕;
2,如果j==2或j==1,则a[0]为所求;
如果j>2,继续上面的操作(1)
nineforever
2009-03-05
打赏
举报
回复
概率大于50%时可以不用计数,时间O(n),空间O(1)
arong1234
2009-03-04
打赏
举报
回复
还有别得方法?
真得模拟取n次算概率?
[Quote=引用 2 楼 fhtingtian 的回复:]
比较笨的办法是对数组里出现的每个元素计数吗
[/Quote]
bfhtian
2009-03-04
打赏
举报
回复
比较笨的办法是对数组里出现的每个元素计数吗
arong1234
2009-03-04
打赏
举报
回复
不就是对数组中相同元素进行计数么?干吗换这么个怪名次出来
易语言源码易语言超级表格自动完成源码
易语言源码易语言超级表格自动完成源码
【Python + 半导体】设备日志自动解析与异常提取工具
本资源提供半导体设备日志自动解析与异常提取的完整解决方案,适用于设备维护、故障诊断、日志审计等场景。
FH8A15G灯串闪灯IC.pdf
FH8A15G灯串闪灯IC
Build PDF translation backend and frontend (3).md
Build PDF translation backend and frontend (3).md
stm32单片机项目资料课程设计文档C语言程序代码原理图电路PCB实例AVR精简学习板DXP资料及其相关资料
stm32单片机项目资料课程设计文档C语言程序代码原理图电路PCB实例AVR精简学习板DXP资料及其相关资料
其它技术问题
3,881
社区成员
9,044
社区内容
发帖
与我相关
我的任务
其它技术问题
C/C++ 其它技术问题
复制链接
扫一扫
分享
社区描述
C/C++ 其它技术问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章