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

返回当前栈内最小元素

设计一个栈,包含传统的push,pop,top方法。此外,再设计一个getMin函数,用于返回栈内最小的元素。

思想:存储普通的数据元素用eStack,存储最小值用栈minStack。当eStack存一个元素时,minStack记录当前最小值,当eStack弹出一个元素时,minStack弹出栈顶元素。eStack和minStack中的top,同时进行操作(入栈,出栈,获取栈顶元素)

代码:

typedef int SElemType;
#define SMaxSize 100;//普通栈 
typedef struct{SElemType data[SMaxSize];int top;
}SqStack;//本题要用的栈 
typedef struct{SqStack eStack,minStack;
}EMStack; //初始化
void initEMstack(MEStck &s){s.eStack.top=-1;s.minStack.top=-1;
} // 获取栈顶元素
bool top(MEStack &s,SElemType &e,SElemType &min){if(s.eStack.top==-1||s.minStack.top==-1){return false;}	e=s.minStack.data[s.eStack.top];min=s.minStack.data[s.mixStack.top];return true;
}
//入栈
bool push(MEStack &s,SElemType e){//栈满if(s.eStack.top==SMaxStack-1||s.mimStack.top=SMaxSize-1){return false;} //元素入eStack栈 s.eStack.data[++s.eStack.top]=e;//最小值入栈if(s.minStack.top==-1){s.minStack.data[++s.mixStack.top]=e;} else{SElemType mTop,eTop;top(s,eTop,mTop); s.minStack.data[++s.mixStack.top]=min(eTop,mTop);}return true; 
} //出栈
bool pop(MEStack &s,SElemType &e,SElemType &min){if(s.eStack.top==-1||s.minStack.top==-1){return false;}e=s.minStack.data[s.eStack.top--];min=s.minStack.data[s.mixStack.top--];return true;
} //返回栈内最小值
bool getMin(MEStack &s,SElemType &min) {if(s.minStack.top==-1){return false;}min=s.minStack.data[s.mixStack.top];return true;
}

时间复杂度O(1);空间复杂度O(n)(空间换时间)


http://www.mrgr.cn/news/27668.html

相关文章:

  • AE抠像roto添加和删除区域以及渲染导出
  • MQTT协议解析 : 物联网领域的最佳选择
  • linux逻辑卷练习
  • 数据结构——快速排序
  • SM软件加密与授权:构建安全高效的软件保护体系
  • 代码修改材质参数
  • Dubbo SPI源码
  • 面试题总结(三) -- 内存管理篇
  • Java--图书管理系统(新版详细讲解)
  • Scrapy 2.6 Spider Middleware 爬虫页中间件基本使用
  • 基于python+django+vue的学生考勤管理系统
  • 86-java jmap分析内存
  • Java API 之集合框架进阶
  • 24年云南省下半年事业单位少有人知的10个真相
  • 【Android Studio】API 29(即Android 10)或更高版本,在程序启动时检查相机权限,并在未获取该权限时请求它
  • 约瑟夫环和一元多项式修正版
  • 乌俄冲突下AI和计算机的使用
  • protobuf中c、c++、python使用
  • 基于SSM的二手车管理系统的设计与实现 (含源码+sql+视频导入教程)
  • 【C#生态园】深度剖析:C#嵌入式开发工具大揭秘
  • [JVM]JVM内存划分, 类加载过程, 双亲委派模型,垃圾回收机制
  • 3287. 求出数组中最大序列值
  • 平安养老险阜阳中心支公司开展金融教育宣传专项活动
  • 『功能项目』切换职业技能面板【49】
  • 清理C盘缓存,删除电脑缓存指令是什么
  • 微信小程序开发第三课