1
+ from __future__ import annotations
2
+
1
3
arr = [- 10 , - 5 , 0 , 5 , 5.1 , 11 , 13 , 21 , 3 , 4 , - 21 , - 10 , - 5 , - 1 , 0 ]
2
4
expect = [- 5 , 0 , 5 , 5.1 , 11 , 13 , 21 , - 1 , 4 , - 1 , - 10 , - 5 , - 1 , 0 , - 1 ]
3
5
4
6
5
- def next_greatest_element_slow (arr : list ) -> list :
7
+ def next_greatest_element_slow (arr : list [ float ] ) -> list [ float ] :
6
8
"""
7
9
Get the Next Greatest Element (NGE) for all elements in a list.
8
10
Maximum element present after the current one which is also greater than the
9
11
current one.
10
12
>>> next_greatest_element_slow(arr) == expect
11
13
True
12
14
"""
15
+
13
16
result = []
17
+
14
18
for i in range (0 , len (arr ), 1 ):
15
- next = - 1
19
+ next : float = - 1
16
20
for j in range (i + 1 , len (arr ), 1 ):
17
21
if arr [i ] < arr [j ]:
18
22
next = arr [j ]
@@ -21,7 +25,7 @@ def next_greatest_element_slow(arr: list) -> list:
21
25
return result
22
26
23
27
24
- def next_greatest_element_fast (arr : list ) -> list :
28
+ def next_greatest_element_fast (arr : list [ float ] ) -> list [ float ] :
25
29
"""
26
30
Like next_greatest_element_slow() but changes the loops to use
27
31
enumerate() instead of range(len()) for the outer loop and
@@ -31,7 +35,7 @@ def next_greatest_element_fast(arr: list) -> list:
31
35
"""
32
36
result = []
33
37
for i , outer in enumerate (arr ):
34
- next = - 1
38
+ next : float = - 1
35
39
for inner in arr [i + 1 :]:
36
40
if outer < inner :
37
41
next = inner
@@ -40,7 +44,7 @@ def next_greatest_element_fast(arr: list) -> list:
40
44
return result
41
45
42
46
43
- def next_greatest_element (arr : list ) -> list :
47
+ def next_greatest_element (arr : list [ float ] ) -> list [ float ] :
44
48
"""
45
49
Get the Next Greatest Element (NGE) for all elements in a list.
46
50
Maximum element present after the current one which is also greater than the
@@ -53,8 +57,8 @@ def next_greatest_element(arr: list) -> list:
53
57
>>> next_greatest_element(arr) == expect
54
58
True
55
59
"""
56
- stack = []
57
- result = [- 1 ] * len (arr )
60
+ stack : list [ float ] = []
61
+ result : list [ float ] = [- 1 ] * len (arr )
58
62
59
63
for index in reversed (range (len (arr ))):
60
64
if len (stack ):
0 commit comments