-
Notifications
You must be signed in to change notification settings - Fork 0
/
MinStack.py
70 lines (61 loc) · 1.41 KB
/
MinStack.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#Source : https://leetcode.com/problems/min-stack/
#Author : Yuan Wang
#Date : 2018-07-26
'''
**********************************************************************************
*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.
**********************************************************************************/
'''
class MinStack:
def __init__(self):
"""
initialize your data structure here.
"""
self.__items=[]
self.mim=None
def push(self, x):
"""
:type x: int
:rtype: void
"""
if not self.__items:
self.mim=x
else:
self.mim = x if x < self.mim else self.mim
self.__items.append(x)
def pop(self):
"""
:rtype: void
"""
element=self.__items.pop()
if element == self.mim:
if len(self.__items) != 0:
self.mim=min(self.__items)
else:
self.mim=None
return element
def top(self):
"""
:rtype: int
"""
return self.__items[len(self.__items)-1]
def getMin(self):
"""
:rtype: int
"""
return self.mim