【劍指offer】包含min函式的棧,可以返回棧中的最小元素
阿新 • • 發佈:2018-12-23
題目要求
包含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;
}
}
}