当前位置: 首页 > ai >正文

155.最小栈

        栈作为一种遵循后进先出(LIFO)原则的线性数据结构,具有重要地位。本题所涉及的最小栈(MinStack)是一种特殊栈结构,其核心特性在于能够在常数时间复杂度O(1)内获取栈中的最小元素。

        实现最小栈的最直观方法是采用辅助栈机制:通过维护一个专门存储最小值的辅助栈,每当新元素入栈时,将其与当前栈顶元素进行比较,并将较小值压入辅助栈顶,从而确保辅助栈顶始终存储着当前栈中的最小元素。

        代码:

class MinStack {
public:stack<int> stk,minStack;MinStack() {minStack.push(INT_MAX);}void push(int val) {int x = min(val,minStack.top());stk.push(val);minStack.push(x);    }void pop() {stk.pop();minStack.pop();}int top() {return stk.top();}int getMin() {return minStack.top();}
};/*** 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();*/

        时间复杂度:push(),pop(),top(),getMin()都是O(1)的,所以总体是O(1)的

        空间复杂度:O(n),n为新元素的个数

http://www.xdnf.cn/news/5628.html

相关文章:

  • 【科研】Visio使用
  • 数据同步DataX任务在线演示
  • 码蹄集——人民币大写数字、全部整除、隐晦余8
  • 嵌入式学习笔记 - MSB, LSB
  • 24 小时 AI 门店管家:重新定义连锁门店智能化管理范式
  • 从模型加密到授权交付,CodeMeter赋能3D打印商业化全流程
  • Ubuntu源码版comfyui的安装
  • 组合问题(多集合)
  • idea中ctrl+/注释,总是出现在最前行
  • 【LeeCode】1.两数之和
  • VsCode相关设置
  • 嵌入式工程师的职业发展路径
  • 《数字人生成工具技术研究与探索》
  • K8S Ingress、IngressController 快速开始
  • 什么是Vim
  • spring中的@Lazy注解详解
  • C++ 迭代器
  • C/C++ 内存管理深度解析:从内存分布到实践应用(malloc和new,free和delete的对比与使用,定位 new )
  • Chrome DevTools 性能面板
  • Spark处理过程-转换算子和行动算子
  • 前端基础之《Vue(16)—Vue脚手架介绍》
  • 【C++】cout的格式输出
  • thinkphp模板文件缺失没有报错/thinkphp无法正常访问控制器
  • 每周靶点分享:CD123、CD28、CCR2/CCL2、LAG-3
  • 云平台管理部署知识点——问题+答案
  • exsi导入镜像报错:行26:硬件系列‘wmx-19不受支持
  • 编译原理AST以Babel为例进行解读、Webpack中自定义loader与plugin
  • 从零构建高性能桌面应用:GPUI Component全解析与实战指南
  • 【C++】语言深处的“精灵”:探索内存的奥妙
  • 香港维尔利健康科技集团成都区域运营中心投入使用,西南市场战略全面提速