Skip to content

Commit 6442566

Browse files
committedDec 14, 2020
feat: add python and java solutions to leetcode problem: No.0155
1 parent df61663 commit 6442566

File tree

6 files changed

+186
-18
lines changed

6 files changed

+186
-18
lines changed
 

‎README.md

+1
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@
7777
### 栈和队列
7878

7979
1. [有效的括号](/solution/0000-0099/0020.Valid%20Parentheses/README.md)
80+
1. [最小栈](/solution/0100-0199/0155.Min%20Stack/README.md)
8081
1. [用栈实现队列](/solution/0200-0299/0232.Implement%20Queue%20using%20Stacks/README.md)
8182
1. [用队列实现栈](/solution/0200-0299/0225.Implement%20Stack%20using%20Queues/README.md)
8283

‎README_EN.md

+1
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ Complete solutions to [LeetCode](https://leetcode-cn.com/problemset/all/), [LCOF
7272
### Stack & Queue
7373

7474
1. [Valid Parentheses](/solution/0000-0099/0020.Valid%20Parentheses/README_EN.md)
75+
1. [Min Stack](/solution/0100-0199/0155.Min%20Stack/README_EN.md)
7576
1. [Implement Queue using Stacks](/solution/0200-0299/0232.Implement%20Queue%20using%20Stacks/README_EN.md)
7677
1. [Implement Stack using Queues](/solution/0200-0299/0225.Implement%20Stack%20using%20Queues/README_EN.md)
7778

‎solution/0100-0199/0155.Min Stack/README.md

+70-1
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,84 @@ minStack.getMin(); --> 返回 -2.
3737
<!-- 这里可写当前语言的特殊实现逻辑 -->
3838

3939
```python
40+
class MinStack:
4041

42+
def __init__(self):
43+
"""
44+
initialize your data structure here.
45+
"""
46+
self.s = []
47+
self.helper = []
48+
49+
50+
def push(self, x: int) -> None:
51+
self.s.append(x)
52+
element = x if not self.helper or x < self.helper[-1] else self.helper[-1]
53+
self.helper.append(element)
54+
55+
def pop(self) -> None:
56+
self.s.pop()
57+
self.helper.pop()
58+
59+
def top(self) -> int:
60+
return self.s[-1]
61+
62+
def getMin(self) -> int:
63+
return self.helper[-1]
64+
65+
66+
# Your MinStack object will be instantiated and called as such:
67+
# obj = MinStack()
68+
# obj.push(x)
69+
# obj.pop()
70+
# param_3 = obj.top()
71+
# param_4 = obj.getMin()
4172
```
4273

4374
### **Java**
4475

4576
<!-- 这里可写当前语言的特殊实现逻辑 -->
4677

4778
```java
48-
79+
class MinStack {
80+
81+
private Deque<Integer> s;
82+
private Deque<Integer> helper;
83+
84+
/** initialize your data structure here. */
85+
public MinStack() {
86+
s = new ArrayDeque<>();
87+
helper = new ArrayDeque<>();
88+
}
89+
90+
public void push(int x) {
91+
s.push(x);
92+
int element = helper.isEmpty() || x < helper.peek() ? x : helper.peek();
93+
helper.push(element);
94+
}
95+
96+
public void pop() {
97+
s.pop();
98+
helper.pop();
99+
}
100+
101+
public int top() {
102+
return s.peek();
103+
}
104+
105+
public int getMin() {
106+
return helper.peek();
107+
}
108+
}
109+
110+
/**
111+
* Your MinStack object will be instantiated and called as such:
112+
* MinStack obj = new MinStack();
113+
* obj.push(x);
114+
* obj.pop();
115+
* int param_3 = obj.top();
116+
* int param_4 = obj.getMin();
117+
*/
49118
```
50119

51120
### **...**

‎solution/0100-0199/0155.Min Stack/README_EN.md

+70-6
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,10 @@
77
<p>Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.</p>
88

99
<ul>
10-
1110
<li>push(x) -- Push element x onto stack.</li>
12-
1311
<li>pop() -- Removes the element on top of the stack.</li>
14-
1512
<li>top() -- Get the top element.</li>
16-
1713
<li>getMin() -- Retrieve the minimum element in the stack.</li>
18-
1914
</ul>
2015

2116
<p>&nbsp;</p>
@@ -51,13 +46,82 @@ minStack.getMin(); --&gt; Returns -2.
5146
### **Python3**
5247

5348
```python
49+
class MinStack:
50+
51+
def __init__(self):
52+
"""
53+
initialize your data structure here.
54+
"""
55+
self.s = []
56+
self.helper = []
57+
5458

59+
def push(self, x: int) -> None:
60+
self.s.append(x)
61+
element = x if not self.helper or x < self.helper[-1] else self.helper[-1]
62+
self.helper.append(element)
63+
64+
def pop(self) -> None:
65+
self.s.pop()
66+
self.helper.pop()
67+
68+
def top(self) -> int:
69+
return self.s[-1]
70+
71+
def getMin(self) -> int:
72+
return self.helper[-1]
73+
74+
75+
# Your MinStack object will be instantiated and called as such:
76+
# obj = MinStack()
77+
# obj.push(x)
78+
# obj.pop()
79+
# param_3 = obj.top()
80+
# param_4 = obj.getMin()
5581
```
5682

5783
### **Java**
5884

5985
```java
60-
86+
class MinStack {
87+
88+
private Deque<Integer> s;
89+
private Deque<Integer> helper;
90+
91+
/** initialize your data structure here. */
92+
public MinStack() {
93+
s = new ArrayDeque<>();
94+
helper = new ArrayDeque<>();
95+
}
96+
97+
public void push(int x) {
98+
s.push(x);
99+
int element = helper.isEmpty() || x < helper.peek() ? x : helper.peek();
100+
helper.push(element);
101+
}
102+
103+
public void pop() {
104+
s.pop();
105+
helper.pop();
106+
}
107+
108+
public int top() {
109+
return s.peek();
110+
}
111+
112+
public int getMin() {
113+
return helper.peek();
114+
}
115+
}
116+
117+
/**
118+
* Your MinStack object will be instantiated and called as such:
119+
* MinStack obj = new MinStack();
120+
* obj.push(x);
121+
* obj.pop();
122+
* int param_3 = obj.top();
123+
* int param_4 = obj.getMin();
124+
*/
61125
```
62126

63127
### **...**

‎solution/0100-0199/0155.Min Stack/Solution.java

+12-11
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,31 @@
11
class MinStack {
2-
3-
private Stack<Integer> stack;
4-
private Stack<Integer> help;
2+
3+
private Deque<Integer> s;
4+
private Deque<Integer> helper;
55

66
/** initialize your data structure here. */
77
public MinStack() {
8-
stack = new Stack<>();
9-
help = new Stack<>();
8+
s = new ArrayDeque<>();
9+
helper = new ArrayDeque<>();
1010
}
1111

1212
public void push(int x) {
13-
stack.push(x);
14-
help.push(help.isEmpty() || help.peek() >= x ? x : help.peek());
13+
s.push(x);
14+
int element = helper.isEmpty() || x < helper.peek() ? x : helper.peek();
15+
helper.push(element);
1516
}
1617

1718
public void pop() {
18-
stack.pop();
19-
help.pop();
19+
s.pop();
20+
helper.pop();
2021
}
2122

2223
public int top() {
23-
return stack.peek();
24+
return s.peek();
2425
}
2526

2627
public int getMin() {
27-
return help.peek();
28+
return helper.peek();
2829
}
2930
}
3031

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
class MinStack:
2+
3+
def __init__(self):
4+
"""
5+
initialize your data structure here.
6+
"""
7+
self.s = []
8+
self.helper = []
9+
10+
11+
def push(self, x: int) -> None:
12+
self.s.append(x)
13+
element = x if not self.helper or x < self.helper[-1] else self.helper[-1]
14+
self.helper.append(element)
15+
16+
def pop(self) -> None:
17+
self.s.pop()
18+
self.helper.pop()
19+
20+
def top(self) -> int:
21+
return self.s[-1]
22+
23+
def getMin(self) -> int:
24+
return self.helper[-1]
25+
26+
27+
# Your MinStack object will be instantiated and called as such:
28+
# obj = MinStack()
29+
# obj.push(x)
30+
# obj.pop()
31+
# param_3 = obj.top()
32+
# param_4 = obj.getMin()

0 commit comments

Comments
 (0)