File tree Expand file tree Collapse file tree 1 file changed +51
-0
lines changed
Algorithms/Sliding Window Expand file tree Collapse file tree 1 file changed +51
-0
lines changed Original file line number Diff line number Diff line change
1
+ '''
2
+
3
+ First negative integer in every window of size k
4
+ https://practice.geeksforgeeks.org/problems/first-negative-integer-in-every-window-of-size-k3345/1
5
+
6
+ '''
7
+
8
+ from collections import deque
9
+
10
+ def printFirstNegativeInteger (A , N , K ):
11
+ queue = deque ()
12
+ ans = []
13
+ for i in range (K ):
14
+ if A [i ] < 0 :
15
+ queue .append (i )
16
+ if not queue :
17
+ ans .append (0 )
18
+ else :
19
+ ans .append (A [queue [0 ]])
20
+
21
+ for i in range (K , N ):
22
+ while queue and queue [0 ] <= (i - K ):
23
+ queue .popleft ()
24
+ if A [i ] < 0 :
25
+ queue .append (i )
26
+ if not queue :
27
+ ans .append (0 )
28
+ else :
29
+ ans .append (A [queue [0 ]])
30
+ return ans
31
+
32
+
33
+ def main ():
34
+
35
+ T = int (input ())
36
+
37
+ while (T > 0 ):
38
+ n = int (input ())
39
+ a = [int (x ) for x in input ().strip ().split ()]
40
+ k = int (input ())
41
+
42
+ answer = printFirstNegativeInteger (a , n , k )
43
+ for i in answer :
44
+ print (i ,end = " " )
45
+ print ()
46
+
47
+ T -= 1
48
+
49
+ if __name__ == "__main__" :
50
+ main ()
51
+
You can’t perform that action at this time.
0 commit comments