Leetcode 1034 Solution
This article provides solution to leetcode question 1034 (subarrays-with-k-different-integers)
Access this page by simply typing in "lcs 1034" in your browser address bar if you have bunnylol configured.
Leetcode Question Link
https://leetcode.com/problems/subarrays-with-k-different-integers
Solution
class Solution:
def subarraysWithKDistinct(self, A: List[int], K: int) -> int:
m = collections.defaultdict(list)
ans = 0
l = 0
r = 0
last_pos = 0
while r < len(A):
while r < len(A) and (len(m) < K or (len(m) == K and A[r] in m)):
m[A[r]].append(r)
last_pos = max(m[A[r]][0], last_pos)
r += 1
while len(m) == K:
ans += r - last_pos
m[A[l]].pop(0)
if len(m[A[l]]) == 0:
m.pop(A[l])
else:
last_pos = max(last_pos, m[A[l]][0])
l += 1
return ans