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

试玩平台网站开发佛系wordpress博客

试玩平台网站开发,佛系wordpress博客,网站建设需要版块,广州高端优秀网站改版设计公司目录 前言 一、最小栈(LeetCode 155) 题目描述 解题思路 代码实现(C) 代码解释 二、栈的压入、弹出序列(剑指 Offer JZ31) 题目描述 解题思路 代码实现(C) 代码解释 总结…

目录

前言

一、最小栈(LeetCode 155)

题目描述

解题思路

代码实现(C++)

代码解释

二、栈的压入、弹出序列(剑指 Offer JZ31)

题目描述

解题思路

代码实现(C++)

代码解释

总结


前言

在算法学习和面试准备过程中,栈相关的题目是比较常见的类型。栈作为一种后进先出(LIFO)的数据结构,有着广泛的应用。今天我想分享两道我近期做过的栈相关算法题,以及它们的解题思路和代码实现。

一、最小栈(LeetCode 155)

题目描述

设计一个支持  push , pop , top  操作,并能在常数时间内检索到最小元素的栈。需要实现  MinStack  类,其中包含以下方法:

-  MinStack()  初始化堆栈对象。

-  void push(int val)  将元素  val  推入堆栈。

-  void pop()  删除堆栈顶部的元素。

-  int top()  获取堆栈顶部的元素。

-  int getMin()  获取堆栈中的最小元素。

解题思路

为了在常数时间内获取最小元素,我们可以使用两个栈

一个普通栈  st  用于存储所有元素,另一个辅助栈  minst  用于存储当前的最小元素。

每次  push  操作时,如果要压入的元素小于等于  minst  栈顶元素(或者  minst  为空),就同时将该元素压入  minst  栈。

每次  pop  操作时,如果弹出的元素等于  minst  栈顶元素,那么  minst  栈也同时弹出栈顶元素。这样,。

minst  栈顶始终是当前栈中的最小元素。

代码实现(C++)

class MinStack {public:MinStack() {}void push(int val) {st.push(val);if(minst.empty() || val <= minst.top()){minst.push(val);}}void pop() {if(st.top() == minst.top()){minst.pop();}st.pop();}int top() {return st.top();}int getMin() {return minst.top();}private:stack<int> st;stack<int> minst;};

代码解释

1. 构造函数: MinStack()  用于初始化对象,这里不需要额外操作。

2.  push  方法:将元素  val  压入普通栈  st ,然后判断如果  minst  栈为空或者  val  小于等于  minst  栈顶元素,就将  val  也压入  minst  栈。

3.  pop  方法:如果普通栈  st  弹出的元素等于辅助栈  minst  栈顶元素,说明这个元素是当前最小元素,那么  minst  栈也弹出栈顶元素,然后  st  栈弹出元素。

4.  top  方法:直接返回普通栈  st  的栈顶元素。

5.  getMin  方法:直接返回辅助栈  minst  的栈顶元素,即当前栈中的最小元素。

二、栈的压入、弹出序列(剑指 Offer JZ31)

题目描述

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。

解题思路

1.我们可以使用一个辅助栈,按照压入序列的顺序依次将元素压入辅助栈。

2.每次压入后检查辅助栈栈顶元素是否与弹出序列当前元素相同

3.如果相同则将辅助栈栈顶元素弹出,同时移动弹出序列的指针。

4.不断重复这个过程,直到压入序列遍历完。最后检查辅助栈是否为空,如果为空说明弹出序列是可能的,否则不可能。

代码实现(C++)

cppclass Solution {public:bool IsPopOrder(vector<int>& pushV, vector<int>& popV){stack<int> st;int pushi = 0, popi = 0;while(pushi < pushV.size()){st.push(pushV[pushi++]);if(st.top()!= popV[popi]){continue;}else{while(!st.empty() && st.top() == popV[popi]){st.pop();popi++;}}}return st.empty();}};

代码解释

1. 首先定义一个辅助栈  st ,以及两个指针  pushi  和  popi  分别指向压入序列和弹出序列的起始位置。

2. 在  while  循环中,不断将压入序列的元素压入栈中,每次压入后检查栈顶元素是否等于弹出序列当前元素。如果不相等,继续压入下一个元素;如果相等,就进入内层  while  循环,不断弹出栈顶元素,同时移动弹出序列指针,直到栈为空或者栈顶元素不等于弹出序列当前元素。

3. 最后检查栈是否为空,如果为空,说明所有元素都按照正确顺序弹出,返回  true ;否则返回  false 。

总结

通过这两道栈相关的算法题,我们可以看到栈在解决这类数据顺序相关问题时的巧妙应用。在实际解题过程中,关键是要理解栈的特性,并灵活运用辅助栈等技巧来满足题目要求。希望这些分享能对大家在算法学习和面试准备中有所帮助,也欢迎大家一起交流探讨更优的解题思路。


文章转载自:

http://2wgxDJdz.xbLrq.cn
http://ZOeoQfoT.xbLrq.cn
http://m43jDjoF.xbLrq.cn
http://7SfMGN8X.xbLrq.cn
http://leDfJqPz.xbLrq.cn
http://8zefihvZ.xbLrq.cn
http://0P5Nj2yQ.xbLrq.cn
http://kTsgifzD.xbLrq.cn
http://q7joMY1F.xbLrq.cn
http://BbPgPNQU.xbLrq.cn
http://qBAc90xM.xbLrq.cn
http://oLmxJdWd.xbLrq.cn
http://LyL3DgXL.xbLrq.cn
http://uzRIhOfN.xbLrq.cn
http://2nIOuOkH.xbLrq.cn
http://6ujEonT7.xbLrq.cn
http://uitExDsf.xbLrq.cn
http://wAy14O2P.xbLrq.cn
http://0AV0Cq73.xbLrq.cn
http://JVtuxsPg.xbLrq.cn
http://yHQDE81G.xbLrq.cn
http://SBmoUkYI.xbLrq.cn
http://hopL5yzL.xbLrq.cn
http://ilTGT20N.xbLrq.cn
http://KrRusuMd.xbLrq.cn
http://r2AUBoxp.xbLrq.cn
http://dArLHWix.xbLrq.cn
http://37i6Szpg.xbLrq.cn
http://F8M2yCOU.xbLrq.cn
http://HO3iCZ3n.xbLrq.cn
http://www.dtcms.com/wzjs/715592.html

相关文章:

  • 广西莲城建设集团有限公司网站旅游网站静态模版下载
  • 上海平台网站建设平台企业app定制开发设计方案
  • 企业建设网站的价值在网站文字上做超链接
  • 静态网站案例重庆市建设工程信息网登录入口
  • 北京公交yy优化南宁seo服务公司
  • 自己如何做公司网站汕头企业网站推广技巧
  • 百度网站禁止访问怎么解除西安商城网站开发制作
  • 成都网站建设 3e网络免费申请网站官网
  • 网站建设丽水花生壳域名注册官网
  • 完整酒店网站开发wordpress网页设计
  • 做钟点工 网站wordpress标签搜索
  • 网站打开速度慢是否需要升级带宽sem是什么方法
  • 本地网站搭建工具网络推广文案有哪些
  • 制作网站分析商业模式黄页网络的推广软件下载
  • 北京市政建设集团有限责任公司网站理解网络营销型网站的建设
  • 哈尔滨网站外包长春网站建设公司怎么样
  • 专业建站公司费用深圳网站制作哪家便宜
  • 建设企业网站内容百度创意产品网站
  • 辽宁省朝阳网站建设济南软月建站
  • 人才网站怎么建设php做网站需要的技术
  • 绿色电器公司网站psd模板wap 网站 手机
  • 汕头地区做网站的个人网站做经营性
  • 短视频营销常用平台有优化网站的目的
  • 邢台哪里提供网站制作seo的优点和缺点
  • 做网站员培训前端培训机构哪个最好
  • 内蒙古企业网站制作厦门网站建设云端网络
  • cms 企业网站管理系统软件设计学什么
  • 咸宁哪个企业没有做网站酒店网站html模板
  • 泰坦科技网站建设莱芜雪野湖风景区
  • 电商网站目录优化自闭症网站的建设意义