2
2
3
3
4
4
class SegmentTree :
5
- def __init__ (self , N ) :
5
+ def __init__ (self , N : int ) -> None :
6
6
self .N = N
7
- self .st = [
7
+ self .st : List [ int ] = [
8
8
0 for i in range (0 , 4 * N )
9
9
] # approximate the overall size of segment tree with array N
10
- self .lazy = [0 for i in range (0 , 4 * N )] # create array to store lazy update
11
- self .flag = [0 for i in range (0 , 4 * N )] # flag for lazy update
10
+ self .lazy : List [int ] = [
11
+ 0 for i in range (0 , 4 * N )
12
+ ] # create array to store lazy update
13
+ self .flag : List [int ] = [0 for i in range (0 , 4 * N )] # flag for lazy update
12
14
13
- def left (self , idx ) :
15
+ def left (self , idx : int ) -> int :
14
16
return idx * 2
15
17
16
- def right (self , idx ) :
18
+ def right (self , idx : int ) -> int :
17
19
return idx * 2 + 1
18
20
19
- def build (self , idx , l , r , A ) : # noqa: E741
21
+ def build (self , idx : int , l : int , r : int , A : List [ int ]) -> None : # noqa: E741
20
22
if l == r : # noqa: E741
21
23
self .st [idx ] = A [l - 1 ]
22
24
else :
@@ -27,7 +29,9 @@ def build(self, idx, l, r, A): # noqa: E741
27
29
28
30
# update with O(lg N) (Normal segment tree without lazy update will take O(Nlg N)
29
31
# for each update)
30
- def update (self , idx , l , r , a , b , val ): # noqa: E741
32
+ def update (
33
+ self , idx : int , l : int , r : int , a : int , b : int , val : int
34
+ ) -> bool : # noqa: E741
31
35
"""
32
36
update(1, 1, N, a, b, v) for update val v to [a,b]
33
37
"""
@@ -57,7 +61,7 @@ def update(self, idx, l, r, a, b, val): # noqa: E741
57
61
return True
58
62
59
63
# query with O(lg N)
60
- def query (self , idx , l , r , a , b ) : # noqa: E741
64
+ def query (self , idx : int , l : int , r : int , a : int , b : int ) -> int : # noqa: E741
61
65
"""
62
66
query(1, 1, N, a, b) for query max of [a,b]
63
67
"""
@@ -78,7 +82,7 @@ def query(self, idx, l, r, a, b): # noqa: E741
78
82
q2 = self .query (self .right (idx ), mid + 1 , r , a , b )
79
83
return max (q1 , q2 )
80
84
81
- def showData (self ):
85
+ def showData (self ) -> None :
82
86
showList = []
83
87
for i in range (1 , N + 1 ):
84
88
showList += [self .query (1 , 1 , self .N , i , i )]
0 commit comments