Найти самую длинную последовательность в массиве

Рейтинг: 1Ответов: 2Опубликовано: 23.10.2014

В массиве найти самую длинную последовательность нулей и индекс 1-го элемента вычисленной последовательности. Что не так, подскажите, пожалуйста.

public static void main(String[] args)          
    {   int i, len_max, len_ser, start ;
        int x[] = {2, 2, 0, 0, 0, 5, 1,  0, 0, 0, 0} ;
        len_max = 0;
        len_ser = 0;
        start = 0;
        { for(i=0; i<x.length; i++)
        {
        if(x[i]==0)
            {len_ser = len_ser + 1;}
            else    
                    {if (len_ser > len_max)
                        len_max = len_ser;
                        start = i - len_ser;
                    }
                 len_ser=0;
                    }
       }         
        System.out.println (len_max);       }}

Ответы

▲ 5Принят
public class Main {

    public static void main(String[] args) {
        int a[] = {2, 2, 0, 0, 0, 5, 1,  0, 0, 0, 0} ;
        int b[] = new int[a.length];
        int ind = -1;
        int ans = 0;
        if(a[0] == 0) {
            b[0] = 1;
            ind = 0;
            ans = 1;
        }
        for(int i = 1; i < a.length; i++){
            if(a[i] == 0) {
                b[i] = b[i - 1] + 1;
                if(b[i] > ans){
                    ans = b[i];
                    ind = i - b[i] + 1;
                }
            }
        }
        System.out.println(ind);
    }
}
▲ 2

Закину свои 5 копеек:

public class ArrayLongZeroSeq {
        public static void main(String[] args) {
                int s = 0; // счетчик нулей подряд
                int m = 0; // максимум количества нулей подряд
                int p0 = 0; // начало следующей последовательности
                int p = 0; // позиция последней последовательности
//              int x[] = {0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0};
//              int x[] = {0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0};
                int x[] = {0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 0};

                for( int i=0; i < x.length; i++) {
                        if (x[i] == 0) s++;
                        if (i + 1 == x.length || x[i] != 0) {
                                if (s > m) {
                                        m = s;
                                        p = p0;
                                }
                                p0 = i + 1;
                                s = 0;
                        }
                }
                System.out.println("Position = " + p);
                System.out.println("Quantity = " + m);
        }
}

Только выдает нули, если ничего вообще не найдет.