寻找连续数组

问题描述

我试图获得长度为 4 的 [4,6,7] 输出,其中 arr[i]

public static void ascentLength(int arr[],int size) {
    int length = 0;
    int index = 0;
    int count = 1;
      
    for (int i = 0; i < size-1; i++) {
        index = i;
        if (arr[0] <= arr[i+1] && count >0) {
            System.out.println(arr[i]+ " index:" + index); 
            length++;
            count++;
        }          
        if (arr[0] >= arr[i+1]) {
        }
    }
    System.out.println("length: " + length);
}
  
 
/* Driver program to test above function */
public static void main(String[] args) {
    int arr[] = {5,3,4,7,5};
    int n = arr.length;
    ascentLength(arr,n);
}      

解决方法

这是我的解决方案,如果您可以使用 List 会更容易,但这适用于数组:

public static void ascentLength(int arr[],int size) {
    if(size == 1) System.out.println("length: 1");

    // variables keeping longest values
    int longestStartingIndex = 0;
    int longestLength = 1;

    // variables keeping current values        
    int currentStartingIndex = 0;
    int currentCount = 1;
    for (int i = 1; i < size; i++) {
        if (arr[i-1] <= arr[i]) {
            currentCount++;
        } else {
            // check if current count is the longest
            if(currentCount > longestLength) {
                longestLength = currentCount;
                longestStartingIndex = currentStartingIndex;
            }
            currentStartingIndex = i;
            currentCount = 1;
        }
    }
    if(currentCount > longestLength) {
        longestLength = currentCount;
        longestStartingIndex = currentStartingIndex;
    }
}