我有一个程序需要编写,但是我不知道该怎么做...我看过网络的其他部分,但是其中大多数使用了“函数”,还有很多我还没学到的东西。我希望有人帮助我提供基本的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;
}
谢谢您的帮助!