首页 > 其他 > 详细

2 限定性线性表——栈与队列

时间:2019-10-16 20:12:44      阅读:64      评论:0      收藏:0      [点我收藏+]

1 栈与队列

技术分享图片   技术分享图片

1.1 包含min函数的栈

定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数

在该栈中,调用min、push和pop方法

要求时间复杂度均为O(1)

算法思想:

  1. 要求时间复杂度均为 O(1),增加辅助空间实现,即增加一个辅助栈存储min值

  2. 例如:data 中依次入栈 5, 4, 3, 8, 10, 11, 12, 1, 则 min 中依次入栈 5, 4, 3,no,no, no, no, 1。

  3. no 代表此次不入栈,如果 min 中入栈的元素小于等于栈顶元素则入栈,否则不入栈。

技术分享图片
 1 import java.util.Stack;
 2 public class Main
 3 {
 4     Stack<Integer> stack = new Stack<>();
 5     Stack<Integer> minStack = new Stack<>();
 6     public void push(int node)
 7     {
 8         stack.push(node);
 9         if(minStack.isEmpty() || minStack.peek() >= node)
10             minStack.push(node);
11     }
12     public void pop()
13     {
14         stack.pop();
15         if(stack.peek() == minStack.peek())
16         {
17             minStack.pop();
18         }
19     }
20     public int top()
21     {
22         return stack.peek();
23     }
24     public int min()
25     {
26         return minStack.peek();
27     }
28 }
算法描述

 

2 限定性线性表——栈与队列

原文:https://www.cnblogs.com/sketeton/p/11687360.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!