Как написать программу, которая добавляет номера самой длинной увеличивающейся или убывающей последовательности в массиве? - PullRequest
0 голосов
/ 08 декабря 2018

У меня есть программа, которую мне нужно написать, но я понятия не имею, как это сделать ... Я просматривал другие части Интернета, но большинство из них используют 'функцию' и кучувещи, которые я еще не изучил.Я бы хотел, чтобы кто-нибудь помог мне с базовым решением на Java.

Цель:

Предположим, что в массиве есть как минимум 2 элемента.Найдите самый длинный ряд чисел в ary, где самый длинный пробег может быть либо монотонно увеличивающимся (a [i] <= a [i + 1]), либо монотонно убывающим.В случае ничьей для самого длинного пробега выберите самый длинный пробеж, который происходит первым.Вернуть сумму элементов в самом длинном прогоне. </p>

Я пытался использовать список для добавления всех элементов.Код, который я пробовал до сих пор, начинается с:

public int longestRun(int[] ary){
  int sum=0;
if(ary.length==0)
        return 0;

    ArrayList<Integer> list = new ArrayList<Integer>(); 

    for(int num: ary){
        if(list.size()==0 || num>list.get(list.size()-1)){
            list.add(num);
        }else{
            int i=0; 
            int j=list.size()-1;

            while(i<j){
                int mid = (i+j)/2;
                if(list.get(mid) < num){
                    i=mid+1;
                }else{
                    j=mid;
                }
            }

            list.set(j, num);
        }
        for(int b=0;b<list.size();b++){
          sum+=list.get(b);
        }
    }

    return sum;

}

Спасибо за вашу помощь!

...