Java 向后最长连续序列
因此,我有一个方法,通过数组向前搜索,找到最长的连续序列。现在我正在尝试创建一个方法,该方法向后搜索数组并找到最长的连续序列 例如,如果数组输入是{5,56,5,4,3}长,那么forward应该返回5,56;最长的后退应该返回3,4,5,56 前进的方法工作得很好,但是我在尝试让后退的方法工作时遇到了困难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
//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建议的那样?这样会简单得多。