【力扣】最小栈

  🔥博客主页: 我要成为C++领域大神
🎥系列专栏:【C++核心编程】 【计算机网络】 【Linux编程】 【操作系统】
❤️感谢大家点赞👍收藏⭐评论✍️

本博客致力于知识分享,与更多的人进行学习交流

设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。

实现 MinStack 类:

  • MinStack() 初始化堆栈对象。
  • void push(int val) 将元素val推入堆栈。
  • void pop() 删除堆栈顶部的元素。
  • int top() 获取堆栈顶部的元素。
  • int getMin() 获取堆栈中的最小元素。

示例 1:

输入:
["MinStack","push","push","push","getMin","pop","top","getMin"]
[[],[-2],[0],[-3],[],[],[],[]]输出:
[null,null,null,null,-3,null,0,-2]解释:
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin();   --> 返回 -3.
minStack.pop();
minStack.top();      --> 返回 0.
minStack.getMin();   --> 返回 -2.

辅助栈

思路

创建两个栈,一个栈s1正常存放数据,另外一个栈s2存放最小值。每次进行push时,s1直接调用栈的push操作,s2在存放数据时,需要进行比较压栈元素与栈顶元素大小关系,若新元素大于栈顶元素,则重复压入栈顶元素,否则压入新元素。最后获取s2的栈顶,就是我们要找的最小元素。

代码实现

class MinStack {
public:stack<int> s1;stack<int> s2;MinStack() {}void push(int val) {s1.push(val);if (s2.empty())s2.push(val);else if (val >= s2.top())s2.push(s2.top());elses2.push(val);}void pop() {if (s1.empty())return;if (s2.empty())return;s1.pop();s2.pop();}int top() {if (!s1.empty())return s1.top();elsereturn -1;}int getMin() {if (!s1.empty())return s2.top();elsereturn -1;}
};/*** Your MinStack object will be instantiated and called as such:* MinStack* obj = new MinStack();* obj->push(val);* obj->pop();* int param_3 = obj->top();* int param_4 = obj->getMin();*/

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

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

相关文章

数仓工具—Hive语法之替换函数和示例

Hive 替换函数和示例 默认情况下,并没有可用的 Hive 替换函数。如果在处理字符串时需要替换特定值,例如垃圾值,字符串操作函数替换是非常需要的。在本文中,我们将检查 Hive 替换函数 的替代方法,以便在需要时使用。 如前所述,Apache Hive 不提供替换函数的支持。但是,…

信息系统是一个社会技术系统

一.管理信息系统定义 (1) 技术视角 信息系统是&#xff1a; ——由若干相互连接的部件组成的&#xff1b; ——对组织中的信息进行收集、处理、储存和传递的系统&#xff1b; ——用以支持组织制定决策和管理控制&#xff1b; ——还可以协助管理者与员工分析问题、可视…

PLC中的高低字节如何理解?

双字&#xff08;Double Word&#xff0c;通常是32位整数&#xff09;的高低字节定义可能会因具体的PLC型号和通信协议而有所不同。通常&#xff0c;双字可以被划分为两个16位字&#xff0c;每个16位字又分为高字节和低字节。 以下是一般定义&#xff1a; 双字&#xff08;32…

【异常解决】Unable to start embedded Tomcat Nacos 启动报错

Unable to start embedded Tomcat Nacos 启动报错解决方案 一、背景描述二、原因分析三、解决方案 一、背景描述 Windows 本地启动 Nacos&#xff08;2.2.0&#xff09; 服务&#xff0c;控制台报错 Unable to start embedded Tomcat。 报错信息&#xff1a;Unable to start …

《JavaScript语言精粹》学习笔记——数组

JavaScript中并没有像数组一样的数据结构。而是提供了一种拥有一些类数组特性的对象。 数组字面量 var numbers[one,two,three,four,izero,seven,eight]//对象字面量 var numbers object{1:"one",2:"two" };numbers继承自Array.prototype&#xff0c;而n…

HarmonyOS Next原生应用开发-从TS到ArkTS的适配规则(六)

一、仅支持一个静态块 规则&#xff1a;arkts-no-multiple-static-blocks 级别&#xff1a;错误 ArkTS不允许类中有多个静态块&#xff0c;如果存在多个静态块语句&#xff0c;请合并到一个静态块中。 TypeScript class C {static s: stringstatic {C.s aa}static {C.s C.s …

nginx负载均衡实例

实现效果 浏览器输入地址http://nginx服务器ip(:80)/edu/a.html&#xff0c;实现负债均衡效果&#xff0c;平均分配到 服务器ip:8080和 服务器ip:8081进程中。 准备工作 准备两个tomcat&#xff0c;一个监听在8080端口&#xff0c;一个监听在8081端口。也可以准备多个tomcat。…

数据结构小测试:排序算法

目录 1、请简述数据结构八大排序算法的思路。 2、常用排序算法手写 冒泡排序&#xff1a; 选择排序&#xff1a; 快速排序&#xff1a; 归并排序&#xff1a; 堆排序&#xff1a; 3、额外再加一个二分查找吧 1、请简述数据结构八大排序算法的思路。 冒泡排序&#xff…

c# DI构造函数注入

构造函数注入&#xff08;Constructor Injection&#xff09;是依赖注入&#xff08;DI&#xff09;的一种形式&#xff0c;是指通过类的构造函数将依赖项&#xff08;通常是其他类或接口的实例&#xff09;传递给类的实例。 这种方式可以让类在实例化时就具备所需的依赖项&am…

Linux——多路复用之select

目录 前言 一、select的认识 二、select的接口 三、select的使用 四、select的优缺点 前言 在前面&#xff0c;我们学习了五种IO模型&#xff0c;对IO有了基本的认识&#xff0c;知道了select效率很高&#xff0c;可以等待多个文件描述符&#xff0c;那他是如何等待的呢&a…

Dubbo 的泛化调用

在分布式系统中&#xff0c;有时我们需要调用一些未知的服务接口&#xff0c;这些接口可能在编译时并不存在&#xff0c;或者由于版本问题而发生变化。为了应对这种情况&#xff0c;Apache Dubbo 提供了泛化调用&#xff08;Generic Invocation&#xff09;功能&#xff0c;使得…

易保全参与起草的两项区块链全国团体标准正式发布

在数字化转型浪潮席卷全球的今天&#xff0c;区块链技术以其去中心化、透明性、不可篡改等独特优势&#xff0c;正逐步成为重塑各行各业信任机制与业务流程的关键力量。 近日&#xff0c;中国通信工业协会正式发布了《区块链服务 基于区块链的去中心化标识符技术要求》与《区块…

python--实验14 并发编程(多线程)

知识点 1 并发编程 1.1程序提速手段 1.2多任务 并发 在一个CPU一段时间内交替去执行任务。在各个任务之间快速地切换&#xff0c;给人的感觉就是多个任务在“同时进行”。 并行 对于多核CPU处理多任务&#xff0c;操作系统会给CPU的每个内核安排一个执行的软件&#xff0c;多…

[论文笔记] CT数据配比方法论——1、Motivation

我正在写这方面的论文,感兴趣的可以和我一起讨论!!!!!! Motivation 1、探测原有模型的配比: 配比 与 ppl, loss, bpw, benchmark等指标 之间的关系。 2、效果稳定的配比:配比 与 模型效果 之间的规律。 Experiments 1、主语言(什么语言作为主语言,几种主语言?…

【笔记-软考】软件架构风格

Author&#xff1a;赵志乾 Date&#xff1a;2024-07-18 Declaration&#xff1a;All Right Reserved&#xff01;&#xff01;&#xff01; 1. 概念 架构风格是描述某一特定应用领域中系统组织方式的惯用模式&#xff0c;其反映了领域中众多系统所共有的结构和语义特性&#x…

web前端 Vue 框架面试120题(五)

面试题 81 . 请简述Vue更新数组时触发视图更新的方法&#xff1f; 参考回答&#xff1a; push()&#xff1b;pop()&#xff1b;shift()&#xff1b;unshift()&#xff1b;splice()&#xff1b;sort()&#xff1b;reverse()面试题 82 . 简述如何使用Vue-router实现懒加载的方式…

Vue 给表格单元格加省略号和hover提示

基于antd vue的a-popover封装一下即可 <template><a-popoverv-model"visible"trigger"none"><template #content>{{ text }}</template><divclass"ellipsis"mouseenter"onMouseenter"mouseleave"onM…

鸿蒙Navigation路由能力汇总

基本使用步骤&#xff1a; 1、新增配置文件router_map&#xff1a; 2、在moudle.json5中添加刚才新增的router_map配置&#xff1a; 3、使用方法&#xff1a; 属性汇总&#xff1a; https://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-basic-compone…

Java线程池ThreadPoolExecutor原理、源码分析

目录 为什么要使用线程池&#xff1f; 线程池执行任务的具体流程是怎样的&#xff1f; 线程池的五种状态是如何流转的&#xff1f; 线程池中的线程是如何关闭的&#xff1f; 线程池为什么一定得是阻塞队列&#xff1f; 线程发生异常&#xff0c;会被移出线程池吗&#xff…

Python爬虫实战 | 爬取携程网景区评论|美食推荐|景点列表数据

本文采用Selenium库爬取携程网的景区评论。 携程接口接入 Selenium介绍 Selenium是一个Web的自动化测试工具&#xff0c;可以按指定的命令自动操作&#xff0c;如让浏览器加载页面、获取数据、页面截屏等。Selenium本身不自带浏览器&#xff0c;需要与第三方浏览器结合才能使…