Skip to content

Commit 0a56617

Browse files
committed
stack
1 parent 2890853 commit 0a56617

4 files changed

Lines changed: 207 additions & 0 deletions

File tree

‎stack/NearestGreaterToLeft.py‎

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# simple
2+
def NGLSimple(arr):
3+
length = len(arr)
4+
5+
for i in range(0, length):
6+
ans = -1
7+
for j in range(i - 1, -1, -1):
8+
if arr[i] < arr[j]:
9+
ans = arr[j]
10+
break
11+
print(arr[i], " - ", ans)
12+
13+
14+
class Stack:
15+
def __init__(self):
16+
self.stack = []
17+
18+
def push(self, element):
19+
self.stack.append(element)
20+
21+
def isEmpty(self):
22+
return len(self.stack) == 0
23+
24+
def pop(self):
25+
return self.stack.pop()
26+
27+
def top(self):
28+
if self.isEmpty():
29+
return -1
30+
return self.stack[-1]
31+
32+
33+
def NGLStack(arr):
34+
length = len(arr)
35+
s = Stack()
36+
ans = []
37+
38+
for i in range(0, length):
39+
if s.isEmpty():
40+
ans.append(-1)
41+
else:
42+
if s.top() > arr[i]:
43+
ans.append(s.top())
44+
else:
45+
while not s.isEmpty() and s.top() <= arr[i]:
46+
s.pop()
47+
if s.isEmpty():
48+
ans.append(-1)
49+
else:
50+
ans.append(s.top())
51+
s.push(arr[i])
52+
53+
return ans
54+
55+
56+
def main():
57+
arr = [1, 3, 2, 4]
58+
NGLSimple(arr)
59+
print(NGLStack(arr))
60+
61+
62+
if __name__ == "__main__":
63+
main()

‎stack/NearestGreaterToRight.py‎

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# simple
2+
def NGRSimple(arr):
3+
length = len(arr)
4+
5+
for i in range(0, length):
6+
ans = -1
7+
for j in range(i + 1, length):
8+
if arr[i] < arr[j]:
9+
ans = arr[j]
10+
break
11+
print(arr[j], "--", ans)
12+
13+
14+
class Stack:
15+
def __init__(self):
16+
self.stack = []
17+
18+
def isEmpty(self):
19+
return len(self.stack) == 0
20+
21+
def push(self, element):
22+
self.stack.append(element)
23+
24+
def pop(self):
25+
if self.isEmpty():
26+
return -1
27+
else:
28+
return self.stack.pop()
29+
30+
def top(self):
31+
return self.stack[-1]
32+
33+
34+
def NGRStack(arr):
35+
s = Stack()
36+
ans = []
37+
for i in range(len(arr) - 1, -1, -1):
38+
if s.isEmpty():
39+
ans.append(-1)
40+
else:
41+
if s.top() > arr[i]:
42+
ans.append(s.top())
43+
else:
44+
while not s.isEmpty() and s.top() <= arr[i]:
45+
s.pop()
46+
if s.isEmpty():
47+
ans.append(-1)
48+
else:
49+
ans.append(s.top())
50+
s.push(arr[i])
51+
ans.reverse()
52+
return ans
53+
54+
55+
def main():
56+
arr = [11, 13, 21, 3]
57+
NGRSimple(arr)
58+
print(NGRStack(arr))
59+
60+
61+
if __name__ == "__main__":
62+
main()

‎stack/NearestGreaterToRight.py~‎

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# simple
2+
def NGRSimple(arr: list):
3+
length = len(arr)
4+
5+
for i in range(0, length):
6+
ans = -1
7+
for j in range(i + 1, length):
8+
if arr[i] < arr[j]:
9+
ans = arr[j]
10+
break
11+
print(arr[j], "--", ans)
12+
13+
14+
class Stack:
15+
def __init__(self):
16+
self.stack = []
17+
18+
def isEmpty(self):
19+
return len(self.stack) == 0
20+
21+
def push(self, element):
22+
self.stack.append(element)
23+
24+
def pop(self):
25+
if self.isEmpty():
26+
return -1
27+
else:
28+
return self.stack.pop()
29+
def top(self):
30+
if self.isEmpty():
31+
return -1
32+
else:
33+
return s[-1]
34+
35+
36+
def NGRStack(arr):
37+
s = Stack()
38+
ans = []
39+
for i in range(len(arr) - 1, -1, -1):
40+
if s.isEmpty():
41+
ans.append(-1)
42+
else:
43+
if s.top() > arr[i]:
44+
ans.append(s.pop())
45+
else:
46+
while not s.isEmpty() and s.top <= arr[i]:
47+
s.pop()
48+
if s.isEmpty():
49+
ans.append(-1)
50+
else:
51+
ans.append(ans.append(s.pop()))
52+
s.push(arr[i])
53+
54+
55+
def main():
56+
arr = [11, 13, 21, 3]
57+
NGRSimple(arr)
58+
NGRStack(arr)
59+
60+
61+
if __name__ == "__main__":
62+
main()

‎stack/README.md‎

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# stack
2+
3+
- Nearest Greater to Left
4+
- Nearest Greater to Right
5+
- Nearest Smaller to Left
6+
- Nearest Smaller to Right
7+
- Stock Spair Promble
8+
- Maximum Area of Histogram
9+
- Maximum Area of Rectangle binary Matrix
10+
- Rain water trapping
11+
- Implementation of Min stack
12+
- Implementation stack using heap
13+
- Program for Tower of Hanoi
14+
15+
## resource
16+
17+
https://www.geeksforgeeks.org/stack-data-structure/
18+
https://www.youtube.com/watch?v=P1bAPZg5uaE&list=PL_z_8CaSLPWdeOezg68SKkeLN4-T_jNHd
19+
20+

0 commit comments

Comments
 (0)