Menu
CoddyTech

Sliding Window Maximum

Tu reçois un tableau d’entiers nums et une taille de fenêtre k. Une fenêtre de k valeurs consécutives commence à l’extrémité gauche et se déplace vers la droite d’une position à la fois, jusqu’à ce que son bord droit se trouve sur la dernière valeur. Retourne la plus grande valeur de la fenêtre à chaque position, de gauche à droite : n-k+1 valeurs pour un tableau de longueur n.

Fonction

maxSlidingWindow(nums: integer-array, k: integer) → integer-array
numsinteger-array
le tableau sur lequel glisse la fenêtre
kinteger
le nombre de valeurs dans chaque fenêtre
Renvoieinteger-array
la valeur la plus élevée de chaque fenêtre, de la fenêtre la plus à gauche à la fenêtre 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, donc chacune d’elles renvoie 12. Après sa sortie, [3, 8, 5] et [8, 5, 1] ont toutes deux 8 comme valeur maximale.
challenge icon

Pour aller plus loin

Peux-tu créer une file qui permet d’ajouter une valeur à la fin, de retirer la valeur au début et de lire son maximum actuel, chacune de ces opérations en temps amorti O(1) ?

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

Test #1

Test #2

Test #3

Arguments

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

Résultat attendu

[12, 12, 12, 8, 8]