首页 > 其他分享 >768. 最多能完成排序的块 II

768. 最多能完成排序的块 II

时间:2022-08-31 00:11:11浏览次数:84  
标签:II 768 最大值 arr stk 最多能 数组 排序

题目(链接

arr是一个可能包含重复元素的整数数组,我们将这个数组分割成几个“块”,并将这些块分别进行排序。之后再连接起来,使得连接的结果和按升序排序后的原数组相同。

我们最多能将数组分成多少块?

示例 1:

输入: arr = [5,4,3,2,1]
输出: 1
解释:
将数组分成2块或者更多块,都无法得到所需的结果。
例如,分成 [5, 4], [3, 2, 1] 的结果是 [4, 5, 1, 2, 3],这不是有序的数组。 

示例 2:

输入: arr = [2,1,3,4,4]
输出: 4
解释:
我们可以把它分成两块,例如 [2, 1], [3, 4, 4]。
然而,分成 [2, 1], [3], [4], [4] 可以得到最多的块数。 

注意:

  • arr的长度在[1, 2000]之间。
  • arr[i]的大小在[0, 10**8]之间。

题解

思路:

  • 只有当每个块中的元素都不小于前面一个块中的最大值时才可以分块,这样就构成了一个单调递增的序列,
  • 每次加入的新元素只需要和前一个块的最后一个数进行比较,所以只需要使用单调栈存储每个块的最后一个元素即可.

步骤:

  • 如果新加入的值arr[i]大于最后一个块的最大值, 那么arr[i]应该自成一个块使块的数量最大
  • 如果新加入的值arr[i]小于最后一个块的最大值, 那么应该把最大值大于arr[i]的所有块合并起来(只需要记录所有块的最大值加入单调栈中)
class Solution {
public:
    int maxChunksToSorted(vector<int>& arr) {
        stack<int> stk;
        for (int x : arr){
            int t = x;
            // 单调栈
            while (stk.size() && stk.top() > x){
                t = max(t, stk.top());
                stk.pop();
            }
            stk.push(t);
        }
        return stk.size();
    }
};

标签:II,768,最大值,arr,stk,最多能,数组,排序
From: https://www.cnblogs.com/Timesi/p/16641455.html

相关文章

  • 260. 只出现一次的数字 III
     难度中等645收藏分享切换为英文接收动态反馈给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。找出只出现一次的那两个元素。你可以......
  • FTP的传输有两种方式:ASCII传输模式和二进制数据传输模式
    FTP的传输有两种方式:ASCII传输模式和二进制数据传输模式_boker的博客-CSDN博客_ftp传输二进制 https://blog.csdn.net/z507263441/article/details/38586769FTP的传输有......
  • leetcode-998. 最大二叉树 II
    998.最大二叉树II图床:blogimg/刷题记录/leetcode/998/刷题代码汇总:https://www.cnblogs.com/geaming/p/16428234.html题目思路看到树就要想到递归。解法/***D......
  • 654.最大二叉树+998.最大二叉树II
    654.最大二叉树题目描述给定一个不重复的整数数组 nums。 最大二叉树 可以用下面的算法从 nums递归地构建:创建一个根节点,其值为 nums中的 最大值 。递......
  • 通信协议详解(一):IIC总线协议(传输时序+数据格式+设计实现) - 知乎
    一、IIC(Inter-IntegratedCircuit)介绍    IIC(Inter-IntegratedCircuit)即集成电路总线,它是一种具有两线传输的串行通信总线,使用多主从架构,由飞利浦公司在1980年代为了......
  • CF633H Fibonacci-ish II 莫队 线段树 矩阵
    CF633HFibonacci-ishII题意很简明同时给人以不可做感。直接暴力大概是\(n^2log\)的优化一下提前排好序从小到大枚举数字再枚举询问可以完成\(n^2\)经过精细的优化......
  • Apache与IIS的优劣对比
    对于中小企业来说建立自己的网站,对外展示自己的页面是最平常不过的事情了。目前最流行的建立WWW服务工具就要属Apache与IIS了。那么他们之间都有什么区别呢?到底哪个工具才......
  • 「翻译」SAP制造集成和智能(SAP MII)
    SAP制造集成和智能(SAPMII)  集成和连接是成功的工业4.0计划的关键。SAPManufacturingIntegrationandIntelligence(SAPMII)是集成各种应用程序、设备和传感器并将......
  • 「翻译」SAP MII(SAP制造集成和智能)-灵活且可扩展
    SAPMII(SAP制造集成和智能)-灵活且可扩展    通过SAPMII,SAP提供了一个基于Web的、标准化和灵活的IT平台,用于垂直集成到生产中。这将面向流程的制造单元的生产......
  • VisualStudio启动项目提示“[xxxx] iisexpress.exe”已退出
    一、在通过VisualStudio直接启动项目时,iisexpress.exe直接退出1.程序“[6068]iisexpress.exe:程序跟踪”已退出,返回值为0(0x0)。2.程序“[6068]iisexpress.exe“已......