![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
栈和队列
Sun Jiakai_凯
做一只积极且上进的程序猿,读温柔的句子,见阳光的人,眼里全是温柔和笑意!
展开
-
Acwing_42 栈的压入、弹出序列
Acwing_42 栈的压入、弹出序列 解题思路: 1、如果当前压入辅助栈helpStack的栈顶元素的值与弹出序列的index下标所指的元素的值相同,那么将辅助栈的栈顶元素弹出,并且index++,向后移动一位 2、如果当前压入辅助栈helpStack的栈顶元素的值与弹出序列的index下标所指的元素的值不相同,那么继续将压入序列中的元素压入辅助栈中,直到相同为止 3、如果最终辅助栈中为空,没有任何元素则返回true public class A_42 { private static Sta原创 2021-07-20 23:06:54 · 64 阅读 · 0 评论 -
Acwing_41_包含min函数的栈
Acwing_41 包含min函数的栈 设计一个支持push,pop,top等操作并且可以在O(1)时间内检索出最小元素的堆栈 public class A_41 { private static Stack<Integer> stack = new Stack<Integer>(); private static Stack<Integer> help = new Stack<Integer>(); /** * 将元原创 2021-07-19 00:00:45 · 58 阅读 · 0 评论 -
用一个栈实现另一个栈的排序
用一个栈实现另一个栈的排序 解题思路: stack:要被排序的栈 helpStack: 申请的辅助栈 cur: 当前弹出的元素 1、如果 cur 小于或等于 help 的栈顶元素,则将 cur 直接压入help栈 2、如果 cur 大于 help 的栈顶元素,则将 help 的元素逐一弹出,逐一压入 stack栈中,直到 cur 小于或等于 help 的栈顶元素,再将cur压入help栈中 public class MyStack2 { public static void main(原创 2021-07-17 17:35:37 · 104 阅读 · 0 评论 -
用递归函数和栈操作逆序一个栈
用递归函数和栈操作逆序一个栈 public class MyStack1 { /** * 将栈的栈底元素返回并移除 * @return */ public static int getAndRemoveLastElement(Stack<Integer> stack){ int result = stack.pop(); if (stack.empty()){ return result;原创 2021-07-03 20:14:47 · 63 阅读 · 0 评论 -
设计一个有getMin功能的栈
在实现栈的基本功能基础上,再实现返回栈中最小元素的操作 解题方案: 1、设计两个栈,stackData栈用来存放所有数据,stackMin 用来存放每一步当前的最小值 2、初始 stackData 栈和 stackMin 栈中都为空,将第一个要入栈的元素都push到这两个栈中 3、此后要入栈的每一个元素 value 都要先与 stackMin中 的栈顶元素做比较 3.1 如果 value <= stackMin.peek(),将该value同时压入s原创 2021-05-30 12:58:25 · 64 阅读 · 1 评论 -
Acwing_20 用两个栈实现队列
Acwing_20 用两个栈实现队列 用栈实现一个队列,支持如下四种操作: - push(x) – 将元素x插到队尾; - pop() – 将队首的元素弹出,并返回该元素; - peek() – 返回队首元素; - empty() – 返回队列是否为空; **栈的特点是先进后出,队列的特点是先进先出** 注意: 1、stackPush栈往stackPop栈中压入数据时,要一次性全部压入 2、如果stackPop栈中不为空,则不能向stackPop栈中压入数据 代码如下: public原创 2021-05-29 22:21:28 · 73 阅读 · 0 评论