读书人

分享一个题目,该如何处理

发布时间: 2013-01-25 15:55:29 作者: rapoo

分享一个题目
已知一个有n个元素的数组 arr[1....n] 。 ( 1 < = n < = 100 w )
如果在数组的某个区间[a,b]( 也就是 arr[a]...arr[b] )中有一个数出现的次数超过这个区间[a,b]大小的50%,
那么称这个数叫fuck数。
对于M ( 1 < = M < = 100 w )次询问,每次询问输入两个数为A,B,要求输出数组arr的子区间arr[A...B]中的fuck数,如果不存在输出none。




[解决办法]
是否可以直接抽象成,arr[A...B]中,出现次数超过一半的数?

如果可以,那只要遍历一次从arr[A] 到 arr[B],时间复杂度为O(n)

方法参考:http://blog.yidooo.net/archives/3426.html
[解决办法]

引用:
搞定了,随机选取100次即可,误差为(1/2)^100 ,可以忽略不计。

散分

误差是这么算的?那正确率呢

读书人网 >软件架构设计

热点推荐