Menu
CoddyTech

Sliding Window Maximum

Bir tamsayı dizisi nums ve k pencere boyutu veriliyor. k ardışık değerden oluşan bir pencere sol uçta başlar ve sağ kenarı son değerin üzerine gelene kadar her seferinde bir konum sağa ilerler. Soldan sağa her konumda penceredeki en büyük değeri döndürün: uzunluğu n olan bir dizi için n-k+1 değer.

Fonksiyon

maxSlidingWindow(nums: integer-array, k: integer) → integer-array
numsinteger-array
dizinin üzerinde kaydığı pencere
kinteger
her penceredeki değer sayısı
Döndürürinteger-array
En soldaki pencereden en sağdaki pencereye kadar her pencerenin en büyük değeri

Kısıtlar

  • 1 ≤ k ≤ nums.length ≤ 2 × 104
  • -104 ≤ nums[i] ≤ 104
  • Sonuç, soldan sağa sırayla her pencere için bir tane olmak üzere nums.length-k+1 değer içerir.

Örnekler

Girdi
nums = [4, 2, 12, 3, 8, 5, 1]k = 3
Çıktı
[12, 12, 12, 8, 8]
Açıklama
12 ilk üç pencerenin içindedir, bu yüzden her biri 12 yanıtını verir. Pencereden çıktıktan sonra, [3, 8, 5] ve [8, 5, 1] dizilerinin her ikisinde de en büyük değer 8'dir.
challenge icon

Ek soru

Arkaya bir değer eklemeyi, öndeki değeri kaldırmayı ve mevcut maksimum değeri okumayı, her birini amortize edilmiş O(1) zamanda destekleyen bir kuyruk oluşturabilir misin?

Kodu sıfırla
def maxSlidingWindow(nums, k):
    # Kodu buraya yazın

Test #1

Test #2

Test #3

Argümanlar

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

Beklenen Çıktı

[12, 12, 12, 8, 8]