1. 程式人生 > >【劍指offer】包含min函式的棧,可以返回棧中的最小元素

【劍指offer】包含min函式的棧,可以返回棧中的最小元素

題目要求

包含min函式的棧

  • 定義棧的資料結構,請在該型別中實現一個能夠得到棧中所含最小元素的min函式
  • (時間複雜度應為O(1))。

核心思想

棧的特性是先進後出,而不能從任意位置出棧,因此一個棧無法實現。只能通過建立輔助棧來實現。用輔助棧來儲存棧的最小元素。用於返回最小元素。

完整程式碼如下

import java.util.Stack;

/**
 * 
 * 包含min函式的棧
 * 定義棧的資料結構,請在該型別中實現一個能夠得到棧中所含最小元素的min函式
 * (時間複雜度應為O(1))。
 *
 */
public class Solution
{ Stack<Integer> data = new Stack<>(); Stack<Integer> min = new Stack<>(); public void push(int x){ data.push(x); if(min.size() == 0 || x < min.peek()) { min.push(x); } else { min.push(min.peek()); } } public void pop() { if(min.size() > 0 &&
data.size() > 0) { data.pop(); min.pop(); } } public int top() { if(data.size() > 0 && min.size() > 0) { return data.peek(); } else { return -1; } } public int min() { if(data.size() > 0 && min.size() > 0) { return min.peek(); } else { return
-1; } } }