转载源:戳这儿
转载自:
显然arr[i]表示第i个位置应该放置的目标位置,例如对于arr = [1, 0, 2, 3, 4],arr[0] = 1表示第0个位置的1应该放置在位置1。有了这个结论在考虑答案的一个片段s-t,s-t内的所有数的目标位置都小于等于t。例如对于片段0-1,他两的目标位置分别为[1, 0],均小于等于1。有了这个结论,我们只需使用扫描法找出所有片段即可。
class Solution {
public:
int maxChunksToSorted(vector<int>& arr) {
int maxx = 0, ans = 0;
for(int i=0; i<arr.size(); i++) {
maxx = max(maxx, arr[i]);
if(i == maxx) ans++;
}
return ans;
}
};