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

news2025/1/21 0:45:50

768. 最多能完成排序的块 II(困难)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

思路

  • 对于已经分好块的数组,若块数大于 1,则可以得到以下结论:「 右边的块的所有数字均大于或等于左边的块的所有数字」。考虑这个问题:对于已经分好块的数组,若在其末尾添加一个数字,如何求得新数组的分块方式?
  • 新添加的数字可能会改变原数组的分块方式
    • 如果新添加的数字大于或等于原数组最后一个块的最大值,则这个新添加的数字可以自己形成一个块
    • 如果新添加的数字小于原数组最后一个块的最大值,则它必须融入最后一个块
    • 如果它大于或等于原数组倒数第二个块 (如果有)的最大值,那么这个过程可以停止,新数组的分块方式已经求得。否则,它将继续融合原数组倒数第二个块,直到遇到一个块,使得该块的最大值小于或等于这个新添加的数,或者这个数字已经融合了所有块
  • 上述分析过程中,我们只用到了块的最大值来进行比较,比较过程又是从右到左,符合栈的思想,因此可以用类似单调栈的数据结构来存储块的最大值。

在这里插入图片描述

代码

class Solution {
public:
    int maxChunksToSorted(vector<int>& arr) {
        stack<int> st;
        for(int i=0; i<arr.size(); ++i){
            if(st.empty() || arr[i] >= st.top()){
                st.push(arr[i]);
            }
            else if(!st.empty() && arr[i]< st.top()){
                int head = st.top();
                st.pop();
                while(!st.empty() && arr[i] < st.top()){
                    st.pop();
                }
                st.push(head);
            }
        }
        return st.size();
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/625326.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux——多线程互斥

多线程互斥 抢票问题互斥锁锁的接口 理解锁锁的背景概念如何看待锁&#xff1a;加锁和解锁的原理锁的封装 可重入与线程安全死锁死锁的概念与条件 抢票问题 这里用上一篇&#xff1a; https://blog.csdn.net/qq_63580639/article/details/131054847?spm1001.2014.3001.5501 的…

LVGL lv_color_t 像素定义详解

更多源码分析请访问&#xff1a;LVGL 源码分析大全 目录 1、概述2、颜色格式详解2.1、LV_IMG_CF_RAW_X2.2、LV_IMG_CF_TRUE_COLOR_X2.3、LV_IMG_CF_INDEXED_XBIT2.4、LV_IMG_CF_ALPHA_XBIT2.5、LV_IMG_CF_RGBX 3、送显函数&#xff08;flush_cb&#xff09;中的 lv_color_t附录…

【P54】JMeter 生成概要结果(Generate Summary Results)

文章目录 一、生成概要结果&#xff08;Generate Summary Results&#xff09;参数说明二、准备工作三、测试计划设计 一、生成概要结果&#xff08;Generate Summary Results&#xff09;参数说明 可以将测试结果在客户端模式下输出&#xff0c;同时能美化压测输出的结果 使…

申请Let‘s Encrypt免费SSL证书、自动化续签证书

一、环境 安装证书的环境为Centos Nginx&#xff0c;如果没有安装Nginx则需要先安装。 二、申请流程 1、开放80和443端口 firewall-cmd --permanent --add-port80/tcp firewall-cmd --permanent --add-port443/tcp firewall-cmd --reload2、安装 certbot 使用certbot工具能…

Doris动态表使用快速入门实战

1. 动态表构功能概述 半结构化数据&#xff0c;是介于结构化和非结构化之间的数据。和普通纯文本相比&#xff0c;半结构化数据具有一定的结构性。和结构化数据相比&#xff0c;其结构变化复杂&#xff0c;我们又不能方便的使用结构化的方式去描述它。 半结构的数据中通常即包…

Java基础知识总结归纳

0. 入门常识 0.1 Java 特点 0.2 Java 和 C 0.3 JRE 和 JDK 0.4 Java 程序编译过程 1. 数据类型 1.1 基本数据类型 1.2 引用类型 1.3 封装类 1.4 缓存池 2. 字符串 String 2.1 定义 2.2 不可变性的优点 2.3 String vs StringBuffer vs StringBuffer 2.4 字符串常量池…

【网络协议详解】——BGP协议(学习笔记)

目录 &#x1f552; 1. 概述&#x1f552; 2. BGP 发言人&#x1f552; 3. 工作原理&#x1f552; 4. 报文格式&#x1f558; 4.1 报文首部&#x1f558; 4.2 打开报文&#x1f558; 4.3 更新报文&#x1f558; 4.4 保活报文&#x1f558; 4.5 通知报文 &#x1f552; 5. BGP 的…

接口实战一“篇”入魂!你真正地了解接口测试么?

目录 前言&#xff1a; 需求描述&#xff1a; 计划和目标&#xff1a; 需求分析&#xff1a; 1.功能点划分 2.接口测试用例设计 3.测试用例评审 4.测试准备 5.测试执行 前言&#xff1a; 接口测试是软件测试的一种类型&#xff0c;它主要关注软件系统中的接口或 API …

STM32CubeIDE 入门教程

1.安装教程 1.1 去ST 官网下载软件安装包&#xff1a;https://www.st.com/content/st_com/en.html 1.2软件安装&#xff1a; 2.创建工程 2.1 双击打开软件&#xff0c;选择工作区路径&#xff0c;不要出现中文名称 2.2 选择直接创建STM32 工程&#xff0c;我们这里以STM32F103…

详细讲解!Selenium真正绕过webdriver检测

目录 前言&#xff1a; 一、什么是真正绕过浏览器检测&#xff1f; 2、 普通的启动webdriver 3、Js注入真正绕过webdriver的检测属性 js注入的文件[stealth.min.js] 前言&#xff1a; Selenium是一个流行的开源测试工具&#xff0c;用于网络应用程序测试。它使测试人员能够…

运用短信案例举例!Appium自动化测试该如何进行PO模式

目录 前言&#xff1a; 案例一&#xff1a;自动发送短信 前言&#xff1a; Appium是一种广泛用于移动应用程序自动化测试的工具&#xff0c;可以支持iOS和Android系统。在测试App时&#xff0c;使用Page Object&#xff08;PO&#xff09;模式可以提高测试用例的可重用性和可…

如何短时间内上手公众号的运营?选择工具很重要

现在网上都在讲如何运营微信公众号&#xff0c;讲有什么微信公众号技巧&#xff0c;这些都是需要用户话花较多的时间去尝试和理解&#xff0c;今天小编分享一个更简单高效运营公众号的方法&#xff01;下面跟着小编的教程一起学习如何使用乔拓云公众号助手去运营自己的公众号吧…

Vue3 ElementPlus Dialog封装

引言 多个页面中需要录入用户数据&#xff08;弹窗内容相同&#xff09;&#xff0c;重复写弹窗代码比较繁琐。因此封装一下组件&#xff0c;使用效果如下&#xff1a; 本例中模型较简单&#xff0c;记录下使用方法和原理 实现原理 参考VUE官方两个例子&#xff0c;基本父子件…

C++ 教程(02)---- 环境设置

本地环境设置 如果您想要设置 C 语言环境&#xff0c;您需要确保电脑上有以下两款可用的软件&#xff0c;文本编辑器和 C 编译器。 文本编辑器 这将用于输入您的程序。文本编辑器包括 Windows Notepad、OS Edit command、Brief、Epsilon、EMACS 和 vim/vi。 文本编辑器的名…

技术架构演进

架构演进 单机架构应用数据分离架构应用服务集群架构读写 主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构实际互联网架构 单机架构 单机架构&#xff1a; 用户访问量很少&#xff0c;没有对我们的性能、安全等提出很高的要求&#xff0c;而且系统架构简单&#x…

Pilota:为什么一个代码生成工具如此复杂丨GOTC Rust系列分享

对于一个 Rust RPC 框架来说&#xff0c;根据 IDL 做代码生成是为了让用户更方便地使用框架。而生成代码的质量以及周边能力都会对用户的开发体验有着非常非常直接的影响。 所以&#xff0c;字节跳动 CloudWeGo 开发了 Pilota 这样的一个框架&#xff0c;来为用户生成良好的代码…

Redis延时双删

1.为什么缓存和MySQL数据没有保持一致性&#xff1f; 数据一致性是什么意思&#xff0c;“一致性”包含如下情况&#xff1a; 若缓存中有数据&#xff0c;则缓存的数据值需要和DB值相同若缓存无数据&#xff0c;则DB值必须是最新值 不符合这两种情况的&#xff0c;都属于缓存…

【OJ比赛日历】快周末了,不来一场比赛吗? #06.10-06.16 #12场

CompHub[1] 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…&#xff09;比赛。本账号会推送最新的比赛消息&#xff0c;欢迎关注&#xff01; 以下信息仅供参考&#xff0c;以比赛官网为准 目录 2023-06-10&#xff08;周六&#xff09; #4场比赛2023-06-11…

实验五 标准ACL的配置【网络安全】

实验五 标准ACL的配置【网络安全】 前言推荐实验五 标准ACL的配置问题方案步骤 最后 前言 2023-6-8 18:54:22 以下内容源自《【网络安全】》 仅供学习交流使用 推荐 配置标准ACL 实验五 标准ACL的配置 问题 络调通后&#xff0c;保证网络是通畅的。同时也很可能出现未经…

软件测试与打螺丝

单元测试中的FIRST代表下面五组英文单词对应的原则&#xff1a; FastIsolated / IndependentRepeatableSelf-validatingTimely / Thorough 软件开发中&#xff0c;往往会因为我们没有注意到的逻辑或难以理解的代码&#xff0c;而引进Bug来。 怎么尽早地发现Bug&#xff0c;…