参考k神题解就行,写的很详细:
https://leetcode.cn/problems/max-chunks-to-make-sorted-ii/solution/zui-duo-neng-wan-cheng-pai-xu-de-kuai-ii-deng-jie-/
辅助栈
排序块定义:
- 排序块 充分条件: 设此块中最大数字为 head , 若此块后面的所有数字都 >= head ,则此块为排序块。
- 排序块 最短长度为 1,即单个元素可以独立看作一个排序块。
注意栈中存储的是一个块中的最大值,遍历到下一个元素时,如果这个元素比栈顶之下的元素小,那么,栈顶之下的元素应该加入到栈顶元素所在的块中,所以,这里弹出的时候要注意,比较的是栈顶之下的元素与当前遍历到的元素。
请看代码中的示例,最后栈中有几个元素就代表有几个块:
class Solution {