如何编写一个将数组中最长或递增或递减序列号相加的程序?

时间:2018-12-07 21:48:34

标签: java arrays sequence

我有一个程序需要编写,但是我不知道该怎么做...我看过网络的其他部分,但是其中大多数使用了“函数”,还有很多我还没学到的东西。我希望有人帮助我提供基本的Java解决方案。

目标是:

假定该数组至少包含2个元素。在ary中找到最长的数字游程,其中最长的游程可以单调递增(a [i] <= a [i + 1])或单调递减。如果需要最长的并列,请选择最先出现的最长的并列。返回最长的元素总和。

我一直在尝试使用列表添加所有元素。 到目前为止,我尝试过的代码始于:

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;

}

谢谢您的帮助!

0 个答案:

没有答案