1、题目
最长平台指的是在一串排列有序的数字中,找出最长的重复数字;例如有一数组为:[1,2,3,3,4,4,4,4,4,5,6,6,6],则最长平台是4,长度为5.
2、在寻找最长平台中的要求
1)使用尽量少的变量;
2)对数组的元素仅遍历一次;
3)使用代码语句越少越好。
3、方法
已经有人提出非常好的解决方法,他的思路:在最长平台中,首位的数字肯定是相同的,使用一个变量记录目前遍历到的最长平台的长度length,如果存在另一个平台超过了之前寻找到的最长平台(长度为length),那么在当前找到的更长的平台上,首位长度肯定超过了length,即在该平台的第length+1位置(current_index),肯定满足array[current_index] == array[current_index - length - 1] 必然成立,并且length的长度得到了更新(因为超过了以前寻找到的“最长”平台)。代码如下:
public int long_plateau(int[] array){
if(array == null)
return -1;
int length = 1;
int current_index;
for(current_index = 1;current_index < array.length;current_index++){
if(array[current_index] == array[current_index - length])
length++;
}
return length;
}
var code = “a8251c34-9858-438a-b2e2-a799a982d986”