先讨论超过数组长度一半的情况
超过数组长度一半意味着这个数字的个数大于其他全部数字个数之和,算法大致为,首先设置两个参数currentAxis,currentNum。参数currentAxis用来记录当前认为是我们要找的那个数字,参数currentNum用来记录CurrentAxis参数对应的那个数字连续出现的次数。步骤如下:
(1)初始化:设当前的数组为data[],数组的长度为n。currentAxis=data[0],currentNum=1;
(2)设i=1,遍历数组,转向(3);
(3)当data[i]==currentAxis时,currentNum++,转向(5);否则转向(4);
(4)currentNum--,当CurrentNum==0时,currentAxis=data[i];
(5)当i==data.length时,转向(6);否则,i+