总的来说就是贪心算法。
其实做了一些贪心算法,发现每一个贪心的算法题都有固定的规律,但是这个题的规律逻辑是不一一样的,但是足以解决当前的题目。
这里的题目的规律就是,划分块的时候,我们的下标和=当前的元素的和的!
这样的话,我们直接上手判断就行了,如果固定的数都在固定的位置上,那就是这个元素的个数个块了,这样以此类推就行了。
上代码:
class Solution {
public:
int maxChunksToSorted(vector<int>& arr) {
int n=arr.size();
int counts=0;
int sum=0;
int total=0;
for(int i=0;i<n;i++){
total+=i;
sum+=arr[i];
if(total==sum)
counts++;
}
return counts;
}
};