我一开始本来想维护一段区间,记录该区间内的最大最小值,但是好像只维护最大值就可以==
class Solution {
public int maxChunksToSorted(int[] arr) {
int res = 0;
int l = arr.length;
if( l == 1 )return 1;
int[] mmax = new int[l];
mmax[0] = arr[0];
for( int i = 1 ; i < l ; i ++ ){
mmax[i] = Math.max(mmax[i - 1], arr[i]);
}
for( int i = 0 ; i < l ; i ++ ){
if( mmax[i] == i )res += 1;
}
return res;
// int pre = 0;
// int latter = 0;
// while( pre <= latter ){
// int minn = arr[pre];
// int mmax = arr[pre];
// for( int i = pre ; i <= latter ; i ++ ){
// mmax = arr[i] > mmax ? arr[i] : mmax;
// minn = arr[i] < minn ? arr[i] : minn;
// }
// if( latter == mmax )res += 1;
// if( mmax > latter )latter++;
// }
}
}