(栈队列堆) 剑指 Offer 30. 包含min函数的栈 ——【Leetcode每日一题】

news/2024/2/27 21:43:20

❓ 剑指 Offer 30. 包含min函数的栈

难度:简单

定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 minpushpop 的时间复杂度都是 O ( 1 ) O(1) O(1)

示例:

MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.min(); --> 返回 -3.
minStack.pop();
minStack.top(); --> 返回 0.
minStack.min(); --> 返回 -2.

提示

  • 各函数的调用总次数不超过 20000 次

注意:本题 155. 最小栈 相同!

💡思路:

使用一个额外的 minStack,栈顶元素为当前栈中最小的值。

  • 在对栈进行 push 入栈和 pop 出栈操作时,同样需要对 minStack 进行入栈出栈操作,从而使 minStack 栈顶元素一直为当前栈中最小的值。
  • 在进行 push 操作时,需要比较 入栈元素当前栈中最小值,将值较小的元素 pushminStack 中。

🍁代码:(C++、Java)

C++

class MinStack {
private:stack<int> dataStack, minStack;
public:/** initialize your data structure here. */MinStack() {minStack.push(INT_MAX);}void push(int x) {dataStack.push(x);minStack.push(::min(minStack.top(), x));}void pop() {dataStack.pop();minStack.pop();}int top() {return dataStack.top();}int min() {return minStack.top();}
};/*** Your MinStack object will be instantiated and called as such:* MinStack* obj = new MinStack();* obj->push(x);* obj->pop();* int param_3 = obj->top();* int param_4 = obj->min();*/

Java

class MinStack {private Stack<Integer> dataStack = new Stack<>();private Stack<Integer> minStack = new Stack<>();/** initialize your data structure here. */public MinStack() {minStack.push(Integer.MAX_VALUE);}public void push(int x) {dataStack.push(x);minStack.push(Math.min(minStack.peek(), x));}public void pop() {dataStack.pop();minStack.pop();}public int top() {return dataStack.peek();}public int min() {return minStack.peek();}
}/*** Your MinStack object will be instantiated and called as such:* MinStack obj = new MinStack();* obj.push(x);* obj.pop();* int param_3 = obj.top();* int param_4 = obj.min();*/

🚀 运行结果:

在这里插入图片描述

🕔 复杂度分析:

  • 时间复杂度 O ( 1 ) O(1) O(1),栈的插入、删除与读取操作都是 O ( 1 ) O(1) O(1),我们定义的每个操作最多调用栈操作两次。
  • 空间复杂度 O ( n ) O(n) O(n),其中 n 为总操作数。最坏情况下,我们会连续插入 n 个元素,此时两个栈占用的空间为 O ( n ) O(n) O(n)

题目来源:力扣。

放弃一件事很容易,每天能坚持一件事一定很酷,一起每日一题吧!
关注我LeetCode主页 / CSDN—力扣专栏,每日更新!

注: 如有不足,欢迎指正!


http://www.ppmy.cn/news/961585.html

相关文章

让ChatGPT做当年的高考现代文阅读

最近ChatGPT火出天际&#xff0c;我突发奇想&#xff0c;如果用ChatGPT来做高考现代文阅读会怎样。 于是找到了当年非常火的一篇文章&#xff0c;叫《一种美味》&#xff0c;这个名字大家可能不太熟&#xff0c;但是提到其中一句话&#xff0c;你可能立马就想起来了。 「眼里…

chatgpt赋能python:Python自动做题:实现高效自动化解决方案

Python自动做题&#xff1a;实现高效自动化解决方案 随着互联网的飞速发展&#xff0c;各种在线考试、测试平台层出不穷&#xff0c;然而&#xff0c;对于广大学生或考生们来说&#xff0c;做题并不是一件轻松的事情。不仅需要花费大量的时间和精力&#xff0c;还要耗费大量的…

百度松果:日常练习题(第1期) 使用ChatGPT写算法题

注&#xff1a;本次所有习题大部分是由ChatGPT解答并微调&#xff0c;会附上相关问答&#xff1a; 1.打靶 请用C写代码&#xff1a;小码哥在练习射箭&#xff0c;他要射穿n个靶子&#xff0c;且每个靶子有高度hi。箭会因为受到靶子的摩擦力而下坠&#xff0c;当射穿一个靶子后…

一个与chatGPT有关的思考题

事情的起因是最近参加了由Datawhale和HuggingFace联合组织的AIGC应用学习&#xff0c;主打是希望帮助所有学习者更好地利用 GPT 等生产力工具来提高自身的学习与工作效率&#xff0c;适应新的时代&#xff0c;这是第一次作业&#xff0c;本来我是想水作业的&#xff08;因为近期…

由浅入深之数组的算法题(vs: chatGPT做算法)

背景 俗话说&#xff0c;温故而知新。chatGPT效果太惊艳了&#xff01;简直就是碾压的效果。但是还要有希望&#xff0c;先拾取&#xff0c;再创新。先了解&#xff0c;再超越吧。 ps: 再刷最后一遍算法题思路。顺便基于chatGPT3.5感受一下大模型的魔力。 数组与指针的区别 在C…

ChatGPT专业应用:生成填空题

正文共 973 字&#xff0c;阅读大约需要 3 分钟 教育工作者必备技巧&#xff0c;您将在3分钟后获得以下超能力&#xff1a; 生成填空题 Beezy评级 &#xff1a;B级 *经过简单的寻找&#xff0c; 大部分人能立刻掌握。主要节省时间。 推荐人 | nanako 编辑者 | Linda ●此图片…

使用ChatGPT汇总了十道手撕高频题

在前端的技术面试中&#xff0c;手撕题是一个非常重要的环节。手撕题不仅能考察面试者的编程水平&#xff0c;还能考察面试者的思考方式和解决问题的能力。 因此&#xff0c;今天就来分享一下借助ChatGPT为大家整理的十道前端高频手撕题&#xff01; 1. 深拷贝 所谓深拷贝&a…

用ChatGPT做算法题,如:回形打印出一个二维数组

输入两个数字 行数和列数&#xff0c;回形打印出一个二维数组&#xff0c;大小按回形的方向依次递增。 如: 输入: 5 、4 输出: 0 1 2 3 13 14 15 4 12 19 16 5 11 18 17 6 10 9 8 7 你可以使用 Python 来实现这个需求。下面是代码实现&#xff1a; d…

使用ChatGPT帮我做题,再也不怕没有老师了

心心念念已久的ChatGPT已经下来了&#xff0c;首先想到的就是用来帮我解析力扣的题目 它会帮助写出相应的文档解析&#xff0c;让你了解代码的运行过程&#xff0c;加深理解&#xff01; 小伙伴都去试试吧&#xff01;

ChatGPT对企业管理决策的影响及其优化方式?

在现代企业管理中&#xff0c;数据分析和决策支持系统变得越来越重要。随着人工智能技术的不断发展&#xff0c;语言模型ChatGPT已经成为许多企业管理者进行数据分析和决策支持的有力工具之一。本文将探讨ChatGPT对企业管理决策的影响及其优化方式。 ChatGPT如何影响企业管理决…

Python多线程编程Queue队列使用方法

一、多线程编程Queue队列 在多线程编程中&#xff0c;由于多个线程并发执行&#xff0c;可能会导致线程之间出现协调问题&#xff0c;为了保证线程间的同步和协调&#xff0c;Python提供了Queue模块&#xff0c;支持多线程间的数据交换和同步。Queue是一种线程安全的数据结构&…

想训练ChatGPT?得先弄明白Reward Model怎么训(附源码)

来源&#xff1a;PaperWeekly ©作者&#xff1a;潘柯宇 研究方向&#xff1a;内容理解、信息抽取 随着最近 ChatGPT 的大火&#xff0c;越来越多人开始关注其中用到的 RLHF&#xff08;Reinforcement Learning from Human Feedback&#xff09;这一核心思想。 使用强化学…

ChatGPT写Flask-Demo——有体验地址

ChatGPT中API的试用 最近ChatGPT智能AI很火&#xff0c;可以写代码&#xff0c;DEBUG&#xff0c;写简历等等 上去查看了一下&#xff0c;是可以调用API的&#xff0c;本着学习的态度就是用这个款AI辅助我写了一个demo&#xff08;本人原来对flask只懂一点点&#xff09; 目录 …

数据库查询速度上不去的查询和分析

主要原因 数据库查询速度上不去、阻塞是指在并发访问 MySQL 数据库时,某个事务占用了资源并且长时间不释放,导致其他事务无法执行或执行缓慢的情况。MySQL 阻塞可能会导致数据库性能下降,甚至出现死锁等问题,需要马上进行处理。在 MySQL中,线程阻塞可能是由于以下原因导致…

ai绘画怎么弄?这份ai绘画教程你必须知道

我有一个关系非常好的女性朋友&#xff0c;她的闺蜜即将过生日&#xff0c;她想给她闺蜜准备一份特别的礼物。但是&#xff0c;她对绘画毫无天赋。因此&#xff0c;我给她推荐了几款好用的ai绘画工具&#xff0c;这些神奇的ai绘画工具能帮助她创作出栩栩如生、美丽动人的女生形…

Nginx配置整合:基本概念、命令、反向代理、负载均衡、动静分离、高可用

一、基本概念 1.什么是Nginx Nginx是一个高性能的HTTP和反向代理服务器&#xff0c;也是一个IMAP/POP3/SMTP代理server。其特点是占有内存少。并发能力强&#xff0c;其并发能力确实在同类型的网页server中表现较好。 http服务器 Web服务器是指驻留于因特网上某种类型计算机的程…

ChatGPT黑化版来了!拉踩TikTok用户智商、写暴力故事等为所欲为,bug只因3个字母...

杨净 羿阁 发自 凹非寺量子位 | 公众号 QbitAI ChatGPT“越狱”后&#xff0c;彻底放飞自我了。 直接无视掉OpenAI给它在安全、伦理上限定的条条框框—— 写暴力故事、拉踩用户智商、随意预测未来……简直无恶不作&#xff01; 而这一切背后竟然只靠一位Reddit用户实现&#xf…

上门家政小程序|上门家政小程序源码|上门家政系统开发

上门家政小程序的开发适合以下几个行业&#xff0c;下面将对其进行介绍并探讨其应用场景。   一、家庭保洁行业   家庭保洁是现代家庭生活中常见的需求之一&#xff0c;上门家政小程序可以为家庭保洁公司提供一个在线预约和管理平台。用户可以通过小程序方便地预约家庭保洁…

椒图--分析中心和后台管理中心

护网的时候我们要把右边的开关开启。开启就会对系统全量的记录&#xff0c;包含有网络行为日志&#xff0c;就会检测我们服务器里面的链接&#xff0c;端口箭头&#xff0c;内内网暴露的链接&#xff1b;进程操作日志&#xff0c;就可以看我们系统创建了哪些进程&#xff0c;就…

你能写新闻吗,新闻名称是“ChatGPT: 自然语言处理的未来发展”

是的&#xff0c;我可以写新闻。这是关于 ChatGPT 的新闻&#xff1a; "ChatGPT: 自然语言处理的未来发展" 近日&#xff0c;OpenAI 公布了一款名为 ChatGPT 的自然语言处理模型。ChatGPT 是基于 GPT-3 技术构建的&#xff0c;可以帮助开发者在聊天机器人、智能客服等…
最新文章