输入一段不减的整数，如11111223333，怎么快速计算重复次数最多的那个数
输入
一段不减整数，如：11111223333
输出
出现次数最多的那个数字，如：本例中1的出现次数最多，输出1
输入的数字具有以下规律
1.数字为正整数，不一定从1开始
2.如果增长，则increment = 1
3.整数的总量不会超过1W，但是事先无法知道总共会输入多少整数
这题不用对所有数字计数，那样很慢。
如果增长，则increment = 1
把数字当作字符串来处理，只要找出所有增长的点的位置就可以了，然后把相邻的点的位置相减，即可得到长度。
因为不一定是从1开始，所有可能的增长的点为："12"，"23"，"34"，。。。"78"，"89"
例如：
将11111223333转为字符串，查找增长点
结果：12-位置4，23-位置6
增长点补正（加1）：12-位置5，23-位置7
初始位置补0，末尾补字符串长度len,得到
[0,5,7,11]
取相邻两点之差
[5,2,4]
所以，出现次数最多的是第一个元素，5次
除此之外，还有不需要遍历的算法：
由于increment = 1，所以看开头和结尾2个数，即可算出出现数字有几种
（如11111223333，开头为1，结尾为3，则出现的数为1到3，共3种）
那么，考虑出现N种数的情况
N=1就不用说了，等于白送答案。
先从简单的N=2说起吧，因为有些细节在N=2的情况说了，后面N>2的情况类似的细节就省略了。
2分采样
若len为奇数，取len/2处的数，这个数就是出现次数最多的数。
若len为偶数，len/2处是间隙，所以取该间隙前后2个数，这2个数相同的话，答案就是这个数，如果不同的话，答案是这两个数出现次数一样，并列最多。
N分采样，取0、len/N、2len/N、...、（N-1）len/N、len处的（N+1）个点，（由于间隙的情况太复杂，这里省略，请参考N=2的处理方法）
然后统计这（N+1）个点里面，出现次数最多的数，把出现次数最多的数叫做M1，出现第二多的叫做M2，依次类推
若 （M1的次数 - M2次数） 大于等于2，则答案为M1
若 （M1的次数 - M2次数） 小于2，那么
2N分采样(若2N>len,则len分采样)，取len/2N、3len/2N、5len/2N、。。。。、处的N个点，与前面N分法时候取的（N+1）个点组合，重新求M1，M2，。。。。
若 （M1的次数 - M2次数） 大于等于2，则答案为M1
若 （M1的次数 - M2次数） 小于2，
则4N分采样(若4N>len,则len分采样)
。。。。依次类推，8N，16N。。。。
直至找到 （M1的次数 - M2次数） 大于等于2为止。其中若变为len分采样，结束条件不需要（M1的次数 - M2次数）大于等于2，M1就是答案。
#### 小结
这个算法大部分时候是比较快的，最差的情况是N个数的各个次数都相差很小，或者都相同，那就会进入最后的len分采样，等于遍历，那还不如一开始就直接遍历比较快。
但是数据的分布越是不均匀，这个算法就越快。
#### 杂谈
写完这个算法之后，我觉得有似曾相识的感觉，大家了解通信原理的有没有一样的感觉？  
如果把这段不减整数映射到频域，那么这就是递增阶梯的方波，问题就是确定其最长一段方波，如果这个方波太长，数据量太大，我们可以对其特征点采样来压缩数据，根据奈奎斯特采样定理（或者叫香农采样定理）：
当采样频率fs.max大于信号中最高频率fmax的2倍时(fs.max>2fmax)，采样之后的数字信号完整地保留了原始信号中的信息。
上文的2N分采样与此正好相似，是不是很有趣～