题解 | #包含min函数的栈#
包含min函数的栈
https://www.nowcoder.com/practice/4c776177d2c04c2494f2555c9fcc1e49
class Solution { private: stack<int> my_stack; stack<int> min_stack; public: void push(int value) { if (min_stack.size() == 0 && my_stack.size() == 0) { min_stack.push(value); my_stack.push(value); } else { my_stack.push(value); min_stack.push(std::min<int>(value, min_stack.top())); } } void pop() { my_stack.pop(); min_stack.pop(); } int top() { return my_stack.top(); } int min() { return min_stack.top(); } };
起初是想给一个scalar,来保存最小值
但是没想到如果有stack.pop 后,可能已经把当时最小值弹出了,这个时候用1个scalar是无效的
得用一个array或者vector,stack
这里为了方便,就用stack了, 其实用vector也行
每次入栈的时候, 用这个stack、vector来保存当时的最小值;
note_coding 文章被收录于专栏
记录自己的解题思路, 欢迎评价