Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 向后最长连续序列_Java_Arrays - Fatal编程技术网

Java 向后最长连续序列

Java 向后最长连续序列,java,arrays,Java,Arrays,因此,我有一个方法,通过数组向前搜索,找到最长的连续序列。现在我正在尝试创建一个方法,该方法向后搜索数组并找到最长的连续序列 例如,如果数组输入是{5,56,5,4,3}长,那么forward应该返回5,56;最长的后退应该返回3,4,5,56 前进的方法工作得很好,但是我在尝试让后退的方法工作时遇到了困难 //Input array int[] a= new int[]{5, 56, 5, 4, 9}; //Call method longestForward longestForward(a

因此,我有一个方法,通过数组向前搜索,找到最长的连续序列。现在我正在尝试创建一个方法,该方法向后搜索数组并找到最长的连续序列

例如,如果数组输入是{5,56,5,4,3}长,那么forward应该返回5,56;最长的后退应该返回3,4,5,56

前进的方法工作得很好,但是我在尝试让后退的方法工作时遇到了困难

//Input array
int[] a= new int[]{5, 56, 5, 4, 9};
//Call method longestForward
longestForward(a, a.length);
longestBackward(a, a.length);}


 public static void longestForward(int a[], int size){
   int maxstart = 0;
   int max = 1;
   int start = 0;
   for (int i = 1; i < size; i++){
     if (a[i] > a[i - 1]){
       if (i - start + 1 > max){
         max = i - start + 1;
         maxstart = start;}} 
     else{
       start = i;}}
   System.out.println(max);
   for (int i = 0; i < max; i++){
     System.out.print(a[maxstart + i] + ", ");}
   System.out.println("");}


  public static void longestBackward(int[] a){

int start = 1;
int maxstart = 1;
int size = 0;
int max = 0;

for (int i = a.length - 1; i > 0; i--){
 if (a[i] > a[i - 1]){ 
   start++; 
   if (start > maxstart){
     maxstart = start;
     size = i + (start - 1); 
     max= i - 1;}}
  else{
   start = 1;}}
System.out.println("");
System.out.println(max);
for (int i = max ; i >= 0; i--){
    System.out.print(a[i] + ", ");}}
//输入数组
int[]a=新的int[]{5,56,5,4,9};
//调用方法longestForward
最长向前(a,a.长度);
最长向后(a,a.长度);}
公共静态void longestfroward(int a[],int size){
int maxstart=0;
int max=1;
int start=0;
对于(int i=1;ia[i-1]){
如果(i-开始+1>最大值){
最大值=i-启动+1;
maxstart=start;}}
否则{
start=i;}}
系统输出打印项次(最大值);
对于(int i=0;i0;i--){
如果(a[i]>a[i-1]){
启动++;
如果(开始>最大开始){
maxstart=start;
大小=i+(开始-1);
max=i-1;}}
否则{
start=1;}}
System.out.println(“”);
系统输出打印项次(最大值);
对于(int i=max;i>=0;i--){
System.out.print(a[i]+“,”;}

在调试器中单步执行代码时,您会看到什么?在第二个函数中,这一行的含义需要颠倒:
if(a[i]>a[i-1]){
longestForward从左到右遍历数组,寻找值不断增加的最长连续序列。longestForward从右到左遍历数组,寻找值不断增加的最长连续序列。这更清楚吗?我认为该方法很好,只是打印这是一个问题。因为它打印的是右最大值(即最长连续序列的长度),但它不能打印正确的数字。为什么不在这两种情况下都从左向右,只更改一行,就像@HoboSapiens建议的那样?这样会简单得多。