Menu
CoddyTech

Sliding Window Maximum

Vous recevez un tableau d’entiers nums et une taille de fenêtre k. Une fenêtre couvre k valeurs consécutives. Elle commence à l’extrémité gauche du tableau et se déplace d’une position vers la droite à chaque fois, jusqu’à ce que son bord droit atteigne la dernière valeur.

Renvoyez un tableau contenant la plus grande valeur dans la fenêtre à chacune de ses positions, de gauche à droite. Un tableau de longueur n comporte n-k+1 fenêtres, le résultat contient donc n-k+1 valeurs.

Fonction

maxSlidingWindow(nums: integer-array, k: integer) → integer-array
numsinteger-array
le tableau sur lequel la fenêtre se déplace
kinteger
le nombre de valeurs dans chaque fenêtre
Renvoieinteger-array
la valeur la plus grande de chaque fenêtre, de la fenêtre la plus à gauche à la plus à droite

Contraintes

  • 1 ≤ k ≤ nums.length ≤ 2 × 104
  • -104 ≤ nums[i] ≤ 104
  • Le résultat contient nums.length-k+1 valeurs, une par fenêtre, de gauche à droite.

Exemples

Entrée
nums = [4, 2, 12, 3, 8, 5, 1]k = 3
Sortie
[12, 12, 12, 8, 8]
Explication
12 se trouve dans les trois premières fenêtres, [4, 2, 12], [2, 12, 3] et [12, 3, 8]. Après sa sortie, les fenêtres [3, 8, 5] et [8, 5, 1] ont toutes deux 8 comme valeur maximale.

lock icon+15 tests cachés à la soumission

challenge icon

Pour aller plus loin

Peux-tu construire une file qui permet d’ajouter une valeur à l’arrière, de retirer la valeur à l’avant et de lire son maximum actuel, chaque opération ayant un temps amorti de O(1) ?

Réinitialiser le code
def maxSlidingWindow(nums, k):
    # Écrivez le code ici
Cas de test

Cas 1

Cas 2

Cas 3

Entrée

nums = [4, 2, 12, 3, 8, 5, 1]
k = 3

Attendu

[12, 12, 12, 8, 8]