首页 > 代码库 > leetcode 155
leetcode 155
155. Min Stack
Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.
- push(x) -- Push element x onto stack.
- pop() -- Removes the element on top of the stack.
- top() -- Get the top element.
- getMin() -- Retrieve the minimum element in the stack.
Example:
MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.getMin(); --> Returns -3.minStack.pop();minStack.top(); --> Returns 0.minStack.getMin(); --> Returns -2.
设计支持push、pop、top和在常量时间内检索最小元素的栈。
push(x) —— 推送元素X进栈
pop() —— 移除栈顶元素
top() —— 得到栈顶元素
getMin() —— 检索栈的最小元素
利用两个vector来实现,一个实现正常的栈,一个在压栈的时候存储最小元素,在检索栈的最小元素的时候直接取最小栈的栈顶元素即可。
代码如下:
1 class MinStack { 2 public: 3 /** initialize your data structure here. */ 4 vector<int> allstack; 5 vector<int> minstack; 6 MinStack() { 7 8 } 9 10 void push(int x) {11 if(allstack.empty())12 {13 allstack.push_back(x);14 minstack.push_back(x);15 }16 else17 {18 allstack.push_back(x);19 if(x <= minstack[minstack.size()-1])20 {21 minstack.push_back(x);22 }23 }24 }25 26 void pop() {27 if(allstack[allstack.size()-1] == minstack[minstack.size()-1])28 {29 minstack.pop_back();30 }31 allstack.pop_back();32 }33 34 int top() {35 return allstack[allstack.size()-1];36 }37 38 int getMin() {39 return minstack[minstack.size()-1];40 }41 };42 43 /**44 * Your MinStack object will be instantiated and called as such:45 * MinStack obj = new MinStack();46 * obj.push(x);47 * obj.pop();48 * int param_3 = obj.top();49 * int param_4 = obj.getMin();50 */
leetcode 155
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。