769. 最多能完成排序的块

class Solution {
public int maxChunksToSorted(int[] arr) {
int max = 0; int res = 0;
for (int i = 0; i < arr.length; i++) {
max = Math.max(arr[i], max);
if(max == i) res++;
}
return res;
}

//  1:当数组的前i个数的最大值为i时 证明[0 ,1 ,...,i]可以通过排序满足条件
// res++ 的意思是, 如果前i个满足条件1 前 i+ k个也满足条件1  则表示 i + k个数最多可以 划分成两个
//本题十分特殊的条件:n个数不重复 并且必为 0 - n - 1 这类条件往往简化数组的操作 无论是排序还是其他 抓住重要规律 不要将问题复杂化

}

posted @ 2021-01-02 17:07  backTraced  阅读(26)  评论(0编辑  收藏  举报