1. 程式人生 > >LeetCode--155--最小棧

LeetCode--155--最小棧

-- tco else sel leetcode lee min 支持 bsp

問題描述:

設計一個支持 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--最小棧