Menu
CoddyTech

Sliding Window Maximum

Bir tamsayı dizisi nums ve k pencere boyutu veriliyor. Bir pencere, art arda gelen k değeri kapsar. Dizinin sol ucundan başlar ve sağ kenarı son değerin üzerine gelene kadar her seferinde bir konum sağa kayar.

Pencerenin her konumunda, içindeki en büyük değeri soldan sağa doğru içeren bir dizi döndürün. Uzunluğu n olan bir dizide n-k+1 pencere bulunur, dolayısıyla sonuç n-k+1 değer içerir.

Fonksiyon

maxSlidingWindow(nums: integer-array, k: integer) → integer-array
numsinteger-array
dizinin üzerinde pencerenin kaydığı
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ıralı olarak 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çinde yer alır: [4, 2, 12], [2, 12, 3] ve [12, 3, 8]. Pencereden çıktıktan sonra [3, 8, 5] ve [8, 5, 1] pencerelerinin ikisinde de en büyük değer 8'dir.

lock iconGönderirken +15 gizli test

challenge icon

Ek soru

Arkaya bir değer eklemeyi, öndeki değeri çıkarmayı ve geçerli maksimum değerini okumayı, her birini amortize O(1) zamanda destekleyen bir kuyruk oluşturabilir misin?

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

Durum 1

Durum 2

Durum 3

Girdi

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

Beklenen

[12, 12, 12, 8, 8]