Que fait ce code ?
Analysez le code Python suivant, puis expliquez sa sortie, son invariant et sa complexité temporelle et spatiale.
def longest_window(nums, k):
left = 0
counts = {}
best = 0
for right, value in enumerate(nums):
counts[value] = counts.get(value, 0) + 1
while len(counts) > k:
removed = nums[left]
counts[removed] -= 1
if counts[removed] == 0:
del counts[removed]
left += 1
best = max(best, right - left + 1)
return best
La fonction reçoit une liste d'entiers et une limite k, puis retourne un entier.
def longest_window(nums, k):