跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • Google 面试题:带最小值操作的栈
未分類
4 10 月 2020

Google 面试题:带最小值操作的栈

Google 面试题:带最小值操作的栈

資深大佬 : zzzrf 2

实现一个栈, 支持以下操作:

  • push(val) 将 val 压入栈
  • pop() 将栈顶元素弹出, 并返回这个弹出的元素
  • min() 返回栈中元素的最小值 要求 O(1) 开销.

在线评测地址

样例:

输入:    push(1)   min()   push(2)   min()   push(3)   min() 输出:    1   1   1 

算法:最小栈

思路:

  • 要求 O(1)时间内完成所有操作,压入栈弹和出栈顶元素并返回本来就是 O(1)没有问题,要返回栈中元素最小值也是 O(1)就需要一个辅助栈。
  • 在压入新元素时,如果辅助栈为空或者辅助栈顶元素大于新元素,那么新元素就是目前最小值,压入新元素;如果辅助栈顶元素小于新元素,那么再次压入栈顶元素。
  • 在弹出元素时,辅助栈跟着一起弹出栈顶元素。
  • 这样就满足了辅助栈内存储的最小值与存储数据的栈同步,查询最小值的操作是 O(1)的。

复杂度:

  • 空间复杂度取决于输入的数据
  • 时间复杂度 O(1)
public class MinStack {      Stack<Integer> stack, minStack;      public MinStack() {         stack = new Stack<Integer>();         minStack = new Stack<Integer>();     }      /*      * @param number: An integer      * @return: nothing      */     public void push(int number) {         stack.push(number);         if (minStack.empty() || number < minStack.peek()) {             minStack.push(number);         } else {             minStack.push(minStack.peek());         }     }      /*      * @return: An integer      */     public int pop() {         minStack.pop();         return stack.pop();     }      /*      * @return: An integer      */     public int min() {         return minStack.peek();     } } 

大佬有話說 (0)

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具