1. 程式人生 > 其它 >力扣簡155 最小棧

力扣簡155 最小棧

手寫棧

//自己本來想對棧只加一個int型的,記錄他的最小值,而且還不會寫棧,絕了!所以建了一個Java筆記,慢慢補充吧。
//看了題解知道不合理。當最小值彈出後求最小值又是誰?還得重新遍歷。
//只看了題解的初始化!

package leetcode01;

import java.util.Deque;
import java.util.LinkedList;
import java.util.Stack;

/**
 * Your MinStack object will be instantiated and called as such:
 * MinStack obj = new MinStack();
 * obj.push(val);
 * obj.pop();
 * int param_3 = obj.top();
 * int param_4 = obj.getMin();
 
*/ //設計一個支援 push ,pop ,top 操作,並能在常數時間內檢索到最小元素的棧。 //實現 MinStack 類: // //MinStack() 初始化堆疊物件。 //void push(int val) 將元素val推入堆疊。 //void pop() 刪除堆疊頂部的元素。 //int top() 獲取堆疊頂部的元素。 //int getMin() 獲取堆疊中的最小元素。 //自己本來想對棧只加一個int型的,記錄他的最小值,而且還不會寫棧,絕了! //看了題解知道不合理。當最小值彈出後求最小值又是誰?還得重新遍歷。 //只看了題解的初始化! class MinStack{ Deque<Integer> MinStack; Deque
<Integer> StackAssist; public MinStack() { MinStack = new LinkedList<Integer>(); StackAssist = new LinkedList<Integer>(); StackAssist.add(Integer.MAX_VALUE); } public void push(int val) { MinStack.push(val); if(val<StackAssist.getFirst()) { StackAssist.push(val); }
else { StackAssist.push(StackAssist.getFirst()); } } public void pop() { MinStack.pop(); StackAssist.pop(); } public int top() { return MinStack.getFirst(); //等於peekFirst 等於peek } public int getMin() { return StackAssist.getFirst(); } } public class Solution155 { public static void main(String[] args) { // TODO Auto-generated method stub MinStack sta=new MinStack(); sta.push(3); System.out.println(sta.top()); System.out.println(sta.getMin()); sta.push(4); System.out.println(sta.top()); System.out.println(sta.getMin()); sta.push(2); System.out.println(sta.top()); System.out.println(sta.getMin()); sta.pop(); System.out.println(sta.top()); System.out.println(sta.getMin()); } }