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

解决方案 »

  1.   

    试着写一个,比较笨: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即为最长平台的长度希望对你有所帮助!