Day【6】最多能完成排序的数II

原题链接
思路
单调栈只有块内部才可以进行排序,块的位置不能发生变化如果说可以进行分块,前一个块的最大值 一定比 后一个块的最小值要小我们的核心其实就是找到从左到右开始不减少(增加或者不变)的地方并分块。比如 [2,1,3,4,4],遍历到 1 的时候会发现 1 比 2 小,因此 2, 1 需要在一块,我们可以将 2 和 1 融合,并重新压回栈。那么融合成 1 还是 2 呢?答案是 2,因为 2 是瓶颈,这提示我们可以用一个递增栈来完成。
因此本质上栈存储的每一个元素就代表一个块,而栈里面的每一个元素的值就是块的最大值。
代码
class Solution {
public int maxChunksToSorted(int[] arr) {
if(arr.length == 0 || arr == null){
return 0;
}

Day【6】最多能完成排序的数II最先出现在Python成神之路

版权声明:
作者:zhangchen
链接:https://www.techfm.club/p/29467.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>