Skip to content

Commit 3bd565a

Browse files
committed
sliding window
1 parent 9f8f92f commit 3bd565a

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

arrays/slidingwindow.py

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# given an array, return true if there are two elements within a window of size k that are equal
2+
3+
def closeDuplicatesBruteForce(arr: list[int], k: int) -> bool:
4+
for l in range(0, len(arr) - k + 1):
5+
for r in range(l + 1, min(l + k, len(arr))):
6+
if arr[l] == arr[r]:
7+
return True
8+
return False
9+
10+
def closeDuplicates(arr: list[int], k: int) -> bool:
11+
window = set()
12+
l = 0
13+
for r in range(0, len(arr)):
14+
if r - l + 1 > k:
15+
window.remove(arr[l])
16+
l += 1
17+
if arr[r] in window:
18+
return True
19+
window.add(arr[r])
20+
return False
21+
22+
print(closeDuplicates([1,2,3,4,5,6,7,8],2)) # False
23+
print(closeDuplicates([1,2,3,4,5,6,7,8],3)) # False
24+
print(closeDuplicates([1,2,3,4,5,4,7,8],2)) # False
25+
print(closeDuplicates([1,2,3,4,5,4,7,8],3)) # True
26+
27+

0 commit comments

Comments
 (0)