Menu
CoddyTech

Subarray Sum Equals K

Bir tamsayı dizisi nums ve bir tamsayı k veriliyor. Elemanlarının toplamı tam olarak k olan alt dizilerin sayısını bulun. Alt dizi, yan yana bulunan bir veya daha fazla elemandan oluşan bir dizidir. Aynı değerleri içerseler bile, farklı konumlarda başlayıp biten alt diziler ayrı ayrı sayılır. Değerler negatif veya sıfır olabilir.

Fonksiyon

subarraySum(nums: integer-array, k: integer) → integer
numsinteger-array
negatif değerler ve sıfırlar içerebilen tamsayı dizisi
kinteger
Sayılabilmesi için bir alt dizinin ulaşması gereken toplam
Döndürürinteger
Elemanlarının toplamı k olan alt dizilerin sayısı

Kısıtlar

  • 1 ≤ nums.length ≤ 2 × 104
  • -1000 ≤ nums[i] ≤ 1000
  • -107 ≤ k ≤ 107
  • Bu uzunluktaki bir dizinin en fazla 200,010,000 alt dizisi vardır; dolayısıyla yanıt 32 bitlik işaretli bir tam sayıya sığar.

Örnekler

Girdi
nums = [3, 4, -7, 1, 3, 3, 1, -4]k = 7
Çıktı
4
Açıklama
Dört dizi toplamda 7 eder: [3, 4], [1, 3, 3], [3, 3, 1] ve [3, 4, -7, 1, 3, 3]. Son dizide -7, 3 ile 4’ü götürür ve toplam daha sonra yeniden 7’ye yükselir; dolayısıyla toplamı k değerini geçtikten sonra bile bir dizi eşleşebilir.

lock iconGönderirken +17 gizli test

challenge icon

Ek soru

Çözümü, yine O(n) zamanda, toplamı k olan en uzun alt dizinin uzunluğunu döndürecek şekilde nasıl değiştirirdin?

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

Durum 1

Durum 2

Durum 3

Girdi

nums = [3, 4, -7, 1, 3, 3, 1, -4]
k = 7

Beklenen

4