这道题求解数组最多分成的块数,但是分成的块数需要满足一定的条件,什么样的条件呢?就是这些块做升序排序后和整个数组做升序排序后相同,这就要求每一块中的最大值是是数组下标i,因为数组中的值是0到n-1的。
class Solution {
public:
int maxChunksToSorted(vector<int>& arr) {
int ans = 0;
int m = INT_MIN;
int size = arr.size();
for(int i = 0; i < size; ++i){
m = max(arr[i], m);
if(m == i) ans++;
}
return ans;
}
};