日期:2014-05-20  浏览次数:20722 次

数组平台
给定一个整数数组b[n],b中连续的相等元素构成的子序列称为平台。试设计算法,求出b中最长平台的长度。
写的总是不合适的,有没有什么好方法呢

{2,1,1,1,2}

等于3。
------解决方案--------------------
试着写一个,比较笨:

int num = 0;// 当前平台的长度
int tem = b[0];// 当前平台的值,用来判断b[i]是否属于当前平台
int max = 0;// 最长平台长度,初始为最小值
for (int i = 0; i < b.length; i++) {
if (tem == b[i]) {
num++;// 属于当前平台
} else {// 不属于当前平台,下一个平台的第一个元素
if (num > max)// 当前平台长度大于max,当前平台目前最长
{
max = num;
}
num = 1;// 初始化num,因b[i]属于平台,所以num为1而不为0
tem = b[i];// 重置temp
}
}
if (num > max) {//此次判断是最后一个平台为最长时
max = num;
}

max即为最长平台的长度

希望对你有所帮助!