我有一个问题要问:
编写一个程序,将其输入参数转换为一个整数数组,然后找到最长的等值连续序列的长度和位置,其中该序列之前和之后的元素的值较小。例如,如果命令行参数是“1 2 2 2 2 5 5 5 3”,您的程序应该输出数字 5 3(第一个数字是从零开始的偏移量,第二个数字是子序列的长度) . 如果连续子序列出现在数组的开头或结尾,则将其视为特殊情况;例如,对于输入“5 5 5 5 3 8 8 8 1”,您的输出应为 0 4(而不是 5 3)。如果有多个子序列满足上述条件,则输出第一个。
更新代码:
public class LongestPlateau {
public static void main(String[] args) {
// TODO - Your solution
int N= args.length;
int [] array = new int [N];
int new_length=0;
int location=0;
int max=0;
int current_length=0;
//assign digits into array
for (int i=0; i < N; i++){
int number = Integer.parseInt(args[i]);
array [i] = number;
}
int compare=array[0];
for (int l=0; l<N; l++){
if (array[l] < compare){
current_length=0;
compare = array[l];
}
else if (array[l] == compare){
current_length+=1;
compare = array[l];
}
else if (array[l] > compare){
compare=array[l];
l++;
}
compare= array[l];
for (int b=0; b<N; b++){
if (current_length > max){
max = current_length;
location = array[l];
new_length=max-1;
}
else if (current_length==1){
new_length=max;
}
}
}
System.out.println(location);
System.out.println(new_length);
}
}
问题是对于“1 2 3 4”的输入,我不断得到一个数组索引越界错误。