Skip to content

Commit 864e666

Browse files
committed
add new code
1 parent c76f105 commit 864e666

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
// https://www.geeksforgeeks.org/design-a-stack-that-supports-getmin-in-o1-time-and-o1-extra-space/
2+
#include <bits/stdc++.h>
3+
using namespace std;
4+
int minEle = INT_MAX;
5+
void push(stack<int> &s, int x){
6+
if(s.empty()){
7+
s.push(x);
8+
minEle = x;
9+
return;
10+
}
11+
if(x >= minEle){
12+
s.push(x);
13+
}else{
14+
s.push(2*x - minEle);
15+
minEle = x;
16+
}
17+
}
18+
19+
void pop(){
20+
if(s.empty()){
21+
cout << "stack empty\n";
22+
return;
23+
}
24+
int y = s.top();
25+
if(y>=minEle){
26+
s.pop();
27+
}else{
28+
minEle = 2*minEle - y;
29+
s.pop();
30+
}
31+
}
32+
33+
int main(){
34+
int x,y;
35+
stack<int> s;
36+
while(1){
37+
switch(ch){
38+
case 1:
39+
cin>>x;
40+
push(s,x);
41+
break;
42+
case 2:
43+
pop(s);
44+
break;
45+
case 3:
46+
cout << "min ele is :: " << minEle << endl;
47+
break;
48+
default:
49+
cout << "wrong input \n";
50+
break;
51+
}
52+
}
53+
return 0;
54+
}

0 commit comments

Comments
 (0)