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

【百日算法计划】:每日一题,见证成长(021)

题目

栈排序

编写程序,对栈进行排序使最小元素位于栈顶。最多只能使用一个其他的临时栈存放数据,但不得将元素复制到别的数据结构(如数组)中。该栈支持如下操作:push、pop、peek 和 isEmpty。当栈为空时,peek 返回 -1。

思路

  • 构造两个栈,一个用作临时栈;
  • 每次新元素入栈的时候,循环与栈顶元素比较,比栈顶元素小则直接入栈,否则,将栈里元素搬移到临时栈中;直到栈为空或新元素小于栈顶元素。
public class Code03 {static class SortedStack {Stack<Integer> stack = new Stack();Stack<Integer> tmpStack = new Stack();//临时栈public SortedStack() {}public void push(int val) {//如果栈不为空且新元素比栈顶元素大 则要把栈顶元素搬移到临时栈中while (!stack.isEmpty() && stack.peek() < val){tmpStack.push(stack.pop());//加入到临时栈}stack.push(val); //新元素入栈while (!tmpStack.isEmpty()){stack.push(tmpStack.pop());//再把临时栈中元素放回stack}}public void pop() {if (!stack.isEmpty()){stack.pop();}}public int peek() {if (stack.isEmpty()) return -1;return stack.peek();}public boolean isEmpty() {return stack.isEmpty();}}}
http://www.lryc.cn/news/448371.html

相关文章:

  • 数据恢复篇:如何恢复几年前删除的照片
  • 前端注释规范
  • uniapp踩坑 tabbar页面数据刷新了但视图没有更新
  • WebAssembly与WebGPU:游戏开发的新时代
  • SAP B1 认证考试习题 - 解析版(二)
  • 《Ubuntu20.04环境下的ROS进阶学习7》
  • 免费视频无损压缩工具+预览视频生成工具
  • OIDC9-OIDC集成登录功能(SpringBoot3.0)
  • 使用Vue.extend( ) 模仿 elementui 创建一个类似 message 消息提示框
  • ansible部署二进制mysql 8
  • 【2023工业3D异常检测文献】基于混合融合的多模态工业异常检测方法Multi-3D-Memory (M3DM)
  • 基于微信小程序的宿舍报修系统的设计与实现(lw+演示+源码+运行)
  • 前端练习总结(1)
  • 计算机网络自顶向下(1)---网络基础
  • Pandas -----------------------基础知识(五)
  • RabbitMQ 高级特性——重试机制
  • 每天一道面试题(20):锁的发生原因和避免措施
  • 2024淘宝双11活动,收下这份必买好物推荐清单
  • vue-cli,element-plus,axios,proxy
  • 《Zeotero的学习》
  • 大数据复习知识点1
  • 9.26 Buu俩题解
  • Mitsuba 渲染基础
  • 深入理解 WebSocket:实时通信的利器
  • OpenEuler配置本地yum源
  • 论文不同写作风格下的ChatGPT提示词分享
  • 单点登录(SSO)基础
  • 设置VsCode搜索时排除文件,文件列表中隐藏文件
  • 急!现在转大模型还来得及吗?零基础入门到精通,收藏这一篇就够了
  • 使用 lstm + crf 实现NER