算法训练 第七周

一、最小栈

在这里插入图片描述
本题要求我们实现一个最小栈数据结构,要求它可以实现栈的基本功能,并且还能使用常数时间复杂度来获取栈中的最小值。

1.辅助栈

我们可以在普通栈的基础上再添加一个维护最小值的辅助栈来实现这个数据结构,我们先创建一个普通的栈来完成栈的基本操作,再创建一个辅助栈,这个辅助栈中用来存放最小值,在我们往栈中存值的时候,如果存入的值比最小栈栈顶的元素还要小,那就把这个值在普通栈和辅助栈中都存入一个,如果存入的值比辅助栈栈顶的值大,那么我们在普通栈中存入这个值,再将辅助栈栈顶的元素再复制一份存入辅助栈,当我们需要弹出值时,就同时弹出普通栈和辅助栈的栈顶,这样辅助栈中就时刻维护着最小的元素了,具体代码如下:

class MinStack {public Stack<Integer> sta;public Stack<Integer> min;public MinStack() {sta = new Stack<>();min = new Stack<>();}public void push(int val) {if(sta.empty()) {sta.push(val);min.push(val);} else {if(val < min.peek()) {sta.push(val);min.push(val);} else {sta.push(val);min.push(min.peek());}}}public void pop() {sta.pop();min.pop();}public int top() {return sta.peek();}public int getMin() {return min.peek();}
}
/*** 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();*/
复杂度分析
  • 时间复杂度:O(1)。
  • 空间复杂度:O(n)。

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

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

相关文章

Python兼职接单(非常详细)从零基础入门到精通,看完这一篇就够了

当下python需求量还是挺大的&#xff0c;对于想要做兼职的程序员还是挺友好的&#xff1a;起码不用愁找不到&#xff1b;目前来看&#xff0c;其兼职方向大致有三&#xff1a;开发、爬虫、数据分析。 就开发来说&#xff0c;目前python的轮子在Github上一抓一大把&#xff0c;…

企业设备巡检的痛点和解决方案

在设备巡检过程中&#xff0c;企业常面临多种痛点。首先&#xff0c;信息管理不足是一个关键问题&#xff0c;企业往往缺乏全面、准确的设备信息记录&#xff0c;这导致巡检工作缺乏针对性和效率。其次&#xff0c;巡检流程的非标准化使得巡检结果出现不一致&#xff0c;重要的…

深度解析NLP定义、应用与PyTorch实战

1. 概述 文本摘要是自然语言处理&#xff08;NLP&#xff09;的一个重要分支&#xff0c;其核心目的是提取文本中的关键信息&#xff0c;生成简短、凝练的内容摘要。这不仅有助于用户快速获取信息&#xff0c;还能有效地组织和归纳大量的文本数据。 1.1 什么是文本摘要&#x…

KODExplorer中ace.js代码编辑器中自定义PHP提示片段

目录 KODExplorerace.js参考 KODExplorer 这是搭建云盘工具&#xff0c;该工具可以作为在线开发工具使用&#xff0c;其中使用了ace.js作为编辑器&#xff0c;这里主要讲解ace.js编辑器中如何自定义代码提示下载旧版本&#xff0c;再升级到新版本&#xff0c;直接下载新版本没…

机器学习中的偏差漂移:挑战与缓解

一、介绍 机器学习算法已在各个行业得到广泛采用&#xff0c;在自动化流程、制定数据驱动决策和提高效率方面发挥着关键作用。然而&#xff0c;他们也面临着挑战&#xff0c;其中一个重要的问题是偏见。机器学习模型中的偏差可能会导致不公平和歧视性的结果&#xff0c;并对现实…

宏观角度认识递归之求根节点到叶节点数字之和

LCR 049. 求根节点到叶节点数字之和 - 力扣&#xff08;LeetCode&#xff09; 理解题意分析子问题&#xff1a;给一个头节点&#xff0c;要返回该头结点左右子树的根结点到叶节点数字和。此处还需注意&#xff1a;在获取根结点到叶节点数字和的时候&#xff0c;要传递一个参数&…

Python requests 库中 iter_lines 方法的流式传输优化

在使用Python的requests库与服务器进行HTTP交互时&#xff0c;发现使用iter_lines方法并不能实现真正的流式传输&#xff0c;而是等待服务器返回一定量的数据或请求结束。这一问题在服务器返回的数据量较大时尤为明显&#xff0c;因为默认情况下&#xff0c;requests库会将数据…

nodejs常见知识点

文章目录 Http和Https的区别HTTP与TCP的关系-TCP的三次握手四次挥手接口请求方式HTTP状态码及其含义为什么JavaScript是单线程同步和异步任务什么是事件循环内存泄漏ajax原理和XmlHttpRequest对象简述JWT鉴权的原理一个tcp接连能发几个httpNodeJs中间件原理Express如何使用中间…

mq具体使用方式

代码方式 第一步方式导入依赖的方式 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--AMQP依赖&#xff0c;包含RabbitMQ--><…

数据较大时的输入输出

先来看问题 假设全校有最多40000名学生和最多2500门课程。现给出每个学生的选课清单&#xff0c;要求输出每门课的选课学生名单。 输入格式: 输入的第一行是两个正整数&#xff1a;N&#xff08;≤40000&#xff09;&#xff0c;为全校学生总数&#xff1b;K&#xff08;≤2500…

机器学习-搜索技术:从技术发展到应用实战的全面指南

在本文中&#xff0c;我们全面探讨了人工智能中搜索技术的发展&#xff0c;从基础算法如DFS和BFS&#xff0c;到高级搜索技术如CSP和优化问题的解决方案&#xff0c;进而探索了机器学习与搜索的融合&#xff0c;最后展望了未来的趋势和挑战&#xff0c;提供了对AI搜索技术深刻的…

印刷企业使用数字工厂管理系统前后有什么变化

随着科技的飞速发展&#xff0c;数字工厂管理系统已经逐渐渗透到印刷企业的各个环节。本文将通过分析印刷企业在使用数字工厂管理系统前后的变化&#xff0c;探讨这一技术如何为印刷行业带来革新。 一、使用前的状况 在使用数字工厂管理系统之前&#xff0c;印刷企业的生产方式…