Skip to content

Commit 14042bd

Browse files
authored
Create First Negative in Window of Size K.py
1 parent d0db094 commit 14042bd

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
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+

0 commit comments

Comments
 (0)