zoukankan      html  css  js  c++  java
  • 155. Min Stack

    题目:

    Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.

    • push(x) -- Push element x onto stack.
    • pop() -- Removes the element on top of the stack.
    • top() -- Get the top element.
    • getMin() -- Retrieve the minimum element in the stack.

    链接: http://leetcode.com/problems/min-stack/

    2/18/2017, Java

    注意!我们其实可以直接用stack不用ArrayList的!

    Integer 和int是不相等的,第14行如果是Integer x = ...那么15行永远不相等!

     1 public class MinStack {
     2     ArrayList<Integer> list = new ArrayList<Integer>();
     3     ArrayList<Integer> min = new ArrayList<Integer>();
     4 
     5     /** initialize your data structure here. */
     6     public MinStack() {}
     7     
     8     public void push(int x) {
     9         list.add(x);
    10         if (min.size() == 0 || x <= min.get(min.size() - 1)) min.add(x);
    11     }
    12 
    13     public void pop() {
    14         int x = list.remove(list.size() - 1);
    15         if (x == min.get(min.size() - 1)) min.remove(min.size() - 1);
    16     }
    17     
    18     public int top() {
    19         return list.get(list.size() - 1);
    20     }
    21     
    22     public int getMin() {
    23         return min.get(min.size() - 1);
    24     }
    25 }

    4/16/2017

    BB电面准备

    Java Stack里没有top(),但是有peek()

     1 public class MinStack {
     2     Stack<Integer> s;
     3     Stack<Integer> ms;
     4     /** initialize your data structure here. */
     5     public MinStack() {
     6         s = new Stack<Integer>();
     7         ms = new Stack<Integer>();
     8     }
     9     
    10     public void push(int x) {
    11         s.push(x);
    12         if (ms.empty() || ms.peek() >= x) ms.push(x);
    13     }
    14     
    15     public void pop() {
    16         int t = s.peek();
    17         if (t <= ms.peek()) ms.pop();
    18         s.pop();
    19     }
    20     
    21     public int top() {
    22         return s.peek();
    23     }
    24     
    25     public int getMin() {
    26         return ms.peek();
    27     }
    28 }
  • 相关阅读:
    从头来之【图解针对虚拟机iOS开发环境搭建】 (转)
    换工作?请记得8、18、48与72这四个密码(转)
    php
    linux上svn连接visual svn server时ssl鉴权失败,问题解决(转)
    javamail发送邮件的简单实例(转)
    稀疏矩阵
    Redis11种Web应用场景
    说说ShellExecuteEx
    怎样从host之外连接到docker container
    hadoop日志分析
  • 原文地址:https://www.cnblogs.com/panini/p/6414720.html
Copyright © 2011-2022 走看看