/* 劍指offer30:包含min函式的棧
* 題目描述:定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的 min 函式在該棧中,
* 呼叫 min、push 及 pop 的時間複雜度都是 o(1)。
* 解題思路:用鍊錶模擬棧,push、pop時間複雜度就是o(1),維持乙個指標指向棧內最小元素
* 使min的時間複雜度也是o(1).
* (這種解題思路是錯誤的,因為只能通過min指標找到
* 曾經稱為過最小值的結點,但還有很多結點不曾成為過最小值,當成為過最小值的結點
* 都出棧後,無法找到剩餘結點的最小值)。
* (以上的錯誤分析是錯誤的,棧中數字的形式類似於【min1、value1、min2、value2、min3】,
* 不會發生錯誤分析中的那種情況即最小元素都出棧了,剩下的元素未被標記過最小,最起碼棧底是最小
* 錯誤的原因在於,pop函式在刪除非最小元素後沒return,導致有接著刪了個最小元素)
* 題解思路:維持乙個額外的棧用來記錄最小元素,棧空或新入棧元素小於等於最小棧的棧頂是,入最小棧
* 出棧時若出棧元素等於最小棧元素,最小棧同時出棧。
* *
* 測試:在棧空的情況下,pop、top、min,題目給的**模板 top min函式的返回值為int,不考慮這兩個函式的null
* */
public class baohanminhanshudezhan
}class minstack1
public stacknode() }
stacknode top = new stacknode();
stacknode min = null;
/** initialize your data structure here. */
public minstack1()
public void push(int x)
if(top.next!=null&&x<=min.val)
node.next=top.next;
top.next=node;
}public void pop()
if(top.next!=null&&top.next.val==min.val)
}public int top()
public int min()
}class minstack2
public stacknode()
} stacknode stacktop = new stacknode();
stacknode mintop = new stacknode();
/** initialize your data structure here. */
public minstack2()
public void push(int x)
//棧非空,且x小於等於最小棧棧頂,入最小棧
if(stacktop.next!=null&&mintop.next.val>=x)
//x入棧
node.next=stacktop.next;
stacktop.next=node;
}public void pop() else
}public int top()
public int min()
}
js 包含min函式的棧 包含min函式的棧
目標 定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的 min 函式在該棧中,呼叫 min push 及 pop 的時間複雜度都是 o 1 設計思路 我們要做的是在我們每次資料入棧的時候,記錄當前資料棧中最小值,並且在pop 出棧之後依然能找到最小值 方案 如果只用乙個 min 變數來儲...
包含min函式的棧
題目描述 定義棧的資料結構,請在該型別中實現乙個能夠得到棧最小元素的min函式。輸入 輸入可能包含多個測試樣例,輸入以eof結束。對於每個測試案例,輸入的第一行為乙個整數n 1 n 1000000 n代表將要輸入的操作的步驟數。接下來有n行,每行開始有乙個字母ci。ci s 時,接下有乙個數字k,代...
包含min函式的棧
1.問題描述 定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的函式,在該棧中呼叫min,push及pop的時間複雜度都為o 1 來自 劍指offer 2.分析 我們可以使用乙個輔助棧,專門來處理題目中得到棧的最小元素的函式時間複雜度為o 1 的這個需求。當我們壓棧時,另外乙個棧正常進行,...