标签:tac 辅助 style 数据结构 turn 最小 复杂度 思路 ack
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
能够想到存储最小元素,关键是当最小元素被弹出之后,如何存储次小元素。
我们用一个辅助栈来存储。
1、当压入数字时,如果它比最小的还要小,则在辅助栈和数据栈中都压入该元素;如果它比最小元素大,则在数据栈中压入该数字,在辅助栈就依旧压入最小元素。
2、当弹出数字时,数据栈和辅助栈都弹出
3、当获得min时,直接获得栈顶元素即可
class Solution { public: stack<int> data_stack, min_stack; void push(int value) { data_stack.push(value); if (min_stack.empty()) min_stack.push(value); else{ int temp = min_stack.top(); temp>value? min_stack.push(value): min_stack.push(temp); } } void pop() { data_stack.pop(); min_stack.pop(); } int top() { return data_stack.top(); } int min() { return min_stack.top(); } };
标签:tac 辅助 style 数据结构 turn 最小 复杂度 思路 ack
原文地址:https://www.cnblogs.com/shiganquan/p/9341427.html