求最大间隔算法
请教一下各位,我有一个数组
{0,1,2,3,4,5,6,7,8,9,0,1,5,6,9.....}
很多的数据,我要找出某一个数,比如2的最大间隔,用什么方法最快
[解决办法]
from left to right, one number one step.
[解决办法]
若你这一组数据没有规律的话,用二分法通常是一个比较有效的做法,大致如下:
1,定位到该数组中间,分成左右两块,往左和往右分别查找,比如要查找2,那么左右分别出现2时,此时把左右两块已经查找的长度相加,就是第一个间隔长度
2,此时将左右剩余未查找的长度与间隔长度比较,若是两端都小于间隔长度,就不必查找了,它肯定是最大的;最是两端大于间隔长度,就继续查找
3,每查找一个间隔长度,将这个间隔长度与前面已经查找的最大间隔长度比较,最后得出结果
这种方法效率或许高些
[解决办法]
这个最大间隔是什么意思呢?
这个可以qsort排序之后,找出最大的数不就好了?是这个意思么.
[解决办法]
如果指定1个数,比如2,要找最大间隔,遍历一次,比较简单
如果要找任意一个数的最大间隔,做个hash表,记录每个数的当前位置,最大间隔,最大间隔的位置,也只需一次遍历。