解题思路:
一道想通了就不那么麻烦的题目,关键在于怎么去思考和读懂题目意思,题目意思是说将当前数组分块,分块后拼起来排序后结果和原数组排序后结果一致,这就隐含要求每个分块区间的数要和其原下标对应,即每个区间中的最大值要和该区间最大下标一致,否则会出现比当前区间最大数小的数排在后面的区间了,这样就不符合题意了,代码如下:
class Solution {
public:
int maxChunksToSorted(vector<int>& arr) {
int res = 0, curMax = 0;
for(int i = 0; i < arr.size(); i ++) {
curMax = max(curMax, arr[i]);
if(curMax == i) res ++;
}
return res;
}
};