思路:搞個雙棧,乙個棧就做正常的操作,另外乙個棧搞成單調非增的即可。有兩種實現方式。
class
minstack
void
push
(int x)
void
pop(
)int
top(
)int
getmin()
private
://正常的棧
stack<
int> s;
//單調非公升棧
stack<
int> min;};
/** * your minstack object will be instantiated and called as such:
* minstack* obj = new minstack();
* obj->push(x);
* obj->pop();
* int param_3 = obj->top();
* int param_4 = obj->getmin();
*/
class
minstack
void
push
(int x)
void
pop(
)int
top(
)int
getmin()
private
://正常的棧
stack<
int> s;
//單調非公升棧
stack<
int> min;};
/** * your minstack object will be instantiated and called as such:
* minstack* obj = new minstack();
* obj->push(x);
* obj->pop();
* int param_3 = obj->top();
* int param_4 = obj->getmin();
*/
面試題 03 02 棧的最小值
請設計乙個棧,除了常規棧支援的pop與push函式以外,還支援min函式,該函式返回棧元素中的最小值。執行push pop和min操作的時間複雜度必須為o 1 示例 minstack minstack newminstack minstack.push 2 minstack.push 0 minst...
面試題 03 02 棧的最小值
請設計乙個棧,除了常規棧支援的pop與push函式以外,還支援min函式,該函式返回棧元素中的最小值。執行push pop和min操作的時間複雜度必須為o 1 示例 minstack minstack new minstack minstack.push 2 minstack.push 0 mins...
面試題 03 02 棧的最小值
請設計乙個棧,除了常規棧支援的pop與push函式以外,還支援min函式,該函式返回棧元素中的最小值。執行push pop和min操作的時間複雜度必須為o 1 示例 minstack minstack new minstack minstack.push 2 minstack.push 0 mins...