Skip to content

Commit 9218a9c

Browse files
committed
Design min stack
1 parent 23ad308 commit 9218a9c

File tree

2 files changed

+60
-0
lines changed

2 files changed

+60
-0
lines changed

Stack/DesignMinStack.cpp

+60
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
#include <iostream>
2+
#include <stack>
3+
#include <vector>
4+
using namespace std;
5+
6+
class MinStack
7+
{
8+
public:
9+
stack<pair<int, int>> s; // val , minVal
10+
11+
MinStack()
12+
{
13+
}
14+
15+
void push(int val)
16+
{
17+
if (s.empty())
18+
{
19+
s.push({val, val});
20+
}
21+
else
22+
{
23+
int minVal = min(val, s.top().second);
24+
s.push({val, minVal});
25+
}
26+
}
27+
28+
void pop()
29+
{
30+
s.pop();
31+
}
32+
33+
int top()
34+
{
35+
return s.top().first; // val
36+
}
37+
38+
int getMin()
39+
{
40+
return s.top().second; // minVal
41+
}
42+
};
43+
44+
int main()
45+
{
46+
MinStack ms;
47+
48+
ms.push(-2);
49+
ms.push(0);
50+
ms.push(-3);
51+
52+
cout << "Minimum value : " << ms.getMin() << endl;
53+
54+
ms.pop();
55+
56+
cout << "Top value : " << ms.top() << endl;
57+
cout << "Minimum value : " << ms.getMin() << endl;
58+
59+
return 0;
60+
}

Stack/DesignMinStack.exe

84 KB
Binary file not shown.

0 commit comments

Comments
 (0)