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

网站开发 运行及维护西安手机定制网站建设

网站开发 运行及维护,西安手机定制网站建设,住建局查询房产信息,分析网站示例题目 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。i…

题目

设计一个支持 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.

分析

我们可以使用两个栈来实现,一个栈用于存储正常的元素,另一个栈用于存储当前栈中的最小元素。

辅助栈

push(int val) 方法

  • 首先将元素 val 压入 dataStack
  • 然后检查 minStack 是否为空或者 val 是否小于等于 minStack 的栈顶元素。如果满足条件,则将 val 也压入 minStack。这样可以保证 minStack 的栈顶元素始终是当前栈中的最小元素。

pop() 方法

  • 首先检查 dataStack 是否为空。
  • 如果 dataStack 不为空,检查 dataStack 的栈顶元素是否等于 minStack 的栈顶元素。如果相等,说明要弹出的元素是当前栈中的最小元素,需要同时将 minStack 的栈顶元素弹出。
  • 最后将 dataStack 的栈顶元素弹出。

top() 方法

  • 检查 dataStack 是否为空。
  • 如果不为空,返回 dataStack 的栈顶元素;否则,简单返回 -1 表示栈为空。

getMin() 方法

  • 检查 minStack 是否为空。
  • 如果不为空,返回 minStack 的栈顶元素;否则,简单返回 -1 表示栈为空。

时间复杂度:O(1)

空间复杂度:O(n)

class MinStack {
private:std::stack<int> dataStack;  // 存储正常元素的栈std::stack<int> minStack;   // 存储最小元素的栈
public:MinStack() {// 构造函数,初始化两个栈}void push(int val) {dataStack.push(val);if (minStack.empty() || val <= minStack.top()) {minStack.push(val);}}void pop() {if (!dataStack.empty()) {if (dataStack.top() == minStack.top()) {minStack.pop();}dataStack.pop();}}int top() {if (!dataStack.empty()) {return dataStack.top();}return -1;  // 这里简单返回 -1 表示栈为空,实际使用中可根据需求处理}int getMin() {if (!minStack.empty()) {return minStack.top();}return -1;  // 这里简单返回 -1 表示栈为空,实际使用中可根据需求处理}
}; 
http://www.dtcms.com/a/571460.html

相关文章:

  • 必应网站收录在哪wordpress个人建站教程
  • 自适应网站的代表天河区网站建设公司
  • 怎么做网站排名爱网站最新发布址
  • 免费建个人网站步骤成都logo标志设计
  • 沧州品牌网站建设郓城建设局网站
  • 公司建网站搭建服务器南京网站制作公司南京微尚
  • 建设旅游网站需要多少钱做网站创意是什么意思
  • 网站后期维护做网站卖掉
  • 网页新建站点南宁seo渠道哪家好
  • 滨州市网站建设梁山网站建设费用
  • 浦东区网站建设电子商务网站预算
  • 滁州网站建设价格搭建网站php源码
  • 网站制作设计方案邮局网站建设的目的
  • 深圳做棋牌网站建设哪家服务好昌平网站开发
  • 网站服务器好网站流程
  • h5模板下载有哪些网站wordpress vul
  • dede建设网站教程制作简单的网页代码
  • 网站站内logo怎么做网页设计尺寸大小指的是什么
  • 住房与城乡建设部网站EPCicp备案网站名称
  • 平面设计可以做网站?郑州网络推广效果
  • 怎么用vs做网站开发ps软件免费下载安装
  • 南昌企业网站排名优化枣庄网站设计
  • 做网站公司怎么赚钱如何用电子邮箱做网站
  • 杭州在线制作网站营销型网站免费模板下载
  • 网站正在备案中门户网站建设 增强责任意识
  • 设计一站式服务三亚市城乡建设局网站
  • 长春网站排名优化公司中国室内设计艺术千年回眸
  • 网站备案需要准备哪些资料商业网站模板制作与开发
  • 小程序 网站建设 app 开发怎么制作代码
  • 成都科技网站建设咨询东莞网站建设哪家专业