LeetCode--155--最小栈
Posted Assange
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode--155--最小栈相关的知识,希望对你有一定的参考价值。
问题描述:
设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。
- push(x) -- 将元素 x 推入栈中。
- pop() -- 删除栈顶的元素。
- top() -- 获取栈顶元素。
- getMin() -- 检索栈中的最小元素。
示例:
MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.getMin(); --> 返回 -3. minStack.pop(); minStack.top(); --> 返回 0. minStack.getMin(); --> 返回 -2.
方法1:
1 class MinStack(object): 2 3 def __init__(self): 4 """ 5 initialize your data structure here. 6 """ 7 self.m=[] 8 9 def push(self, x): 10 """ 11 :type x: int 12 :rtype: void 13 """ 14 self.m.append(x) 15 16 17 def pop(self): 18 """ 19 :rtype: void 20 """ 21 if len(self.m) > 0: 22 temp = self.m[-1] 23 self.m=self.m[::-1] 24 self.m.remove(temp) 25 self.m=self.m[::-1] 26 return temp 27 else: 28 return 29 30 def top(self): 31 """ 32 :rtype: int 33 """ 34 if len(self.m) > 0: 35 return self.m[-1] 36 else: 37 return 38 def getMin(self): 39 """ 40 :rtype: int 41 """ 42 return min(self.m)
官方:
1 class MinStack(object): 2 3 def __init__(self): 4 """ 5 initialize your data structure here. 6 """ 7 self.stack=[] 8 self.stack_bk=[] 9 10 11 def push(self, x): 12 """ 13 :type x: int 14 :rtype: void 15 """ 16 if self.stack==[]: 17 self.stack_bk.append(x) 18 else: 19 if x<=self.stack_bk[-1]: 20 self.stack_bk.append(x) 21 self.stack.append(x) 22 23 def pop(self): 24 """ 25 :rtype: void 26 """ 27 if self.stack[-1]==self.stack_bk[-1]: 28 self.stack_bk.pop() 29 self.stack.pop() 30 31 def top(self): 32 """ 33 :rtype: int 34 """ 35 return self.stack[-1] 36 37 def getMin(self): 38 """ 39 :rtype: int 40 """ 41 return self.stack_bk[-1]
今天课太多了,明天补回来吧。。。。
2018-09-13 23:05:48
以上是关于LeetCode--155--最小栈的主要内容,如果未能解决你的问题,请参考以下文章
[JavaScript 刷题] 栈 - 最小栈, leetcode 155