zoukankan      html  css  js  c++  java
  • 2 限定性线性表——栈与队列

    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 }
    算法描述
  • 相关阅读:
    HDU 1106 排序
    strtok函数()
    HDU 2187汶川地震
    HDU 1716 排列2
    Rightmost Digit
    Text Reverse
    快速幂
    插入排序的一个应用-调整负数在前,正数在后,原来相对位置不变
    cuda 5.0配置vs2008+Visual Assist X +安装问题解决
    vc 热键、组合键的用法
  • 原文地址:https://www.cnblogs.com/sketeton/p/11687360.html
Copyright © 2011-2022 走看看