import java.util.*; public class ShortSubsequence { public int findShortest(int[] A, int n) { if(n <= 1) return 0; int maxLeft = A[0]; int minRight = A[n - 1]; int start = 0; int end = n - 1; //从左到右求无序时最右的位置 for(int i = 0; i < n; i++){ if(A[i] >= maxLeft){ maxLeft = A[i]; }else{ start = i; } } if(start == 0){ return 0; } //从右到左求无序时最左的位置 for(int i = n - 2; i >= 0; i--){ if(A[i] <= minRight){ minRight = A[i]; }else{ end = i; } } return start - end + 1; } }