Menu
CoddyTech

Longest Subarray with Sum K

Tam sayılardan oluşan nums dizisi ve k hedefi verildiğinde, elemanlarının toplamı tam olarak k olan en uzun alt dizinin uzunluğunu döndürün. Alt dizi, ardışık elemanlardan oluşan ve en az bir eleman içeren bir dizidir. Bazı değerler sıfır veya sıfırdan küçük olabilir. Toplamı k olan bir alt dizi yoksa 0 döndürün.

Fonksiyon

longestSubarrayWithSumK(nums: integer-array, k: integer) → integer
numsinteger-array
negatifler ve sıfırlar dahil aranacak tam sayılar
kinteger
alt dizinin sahip olması gereken tam toplam
Döndürürinteger
toplamı k olan en uzun alt dizinin uzunluğu; böyle bir alt dizi yoksa 0

Kısıtlar

  • 1 ≤ nums.length ≤ 2 × 104
  • -104 ≤ nums[i] ≤ 104
  • -109 ≤ k ≤ 109
  • Her önek toplamı -2 × 108 ile 2 × 108 arasında kalır; bu nedenle 32 bitlik tamsayılar yeterlidir.
  • Hiçbir alt dizi toplamı k etmiyorsa 0 döndürün.

Örnekler

Girdi
nums = [2, -1, 3, 1, -4, 2, 3]k = 5
Çıktı
5
Açıklama
Üç çalıştırmanın toplamı 5 eder: sondaki [2, 3], baştaki [2, -1, 3, 1] ve 2 ile 6. indeksler arasındaki [3, 1, -4, 2, 3]. Sonuncusu 5 öğeyle en uzun olanıdır.
challenge icon

Ek soru

Negatif değerlere de izin verildiğinde, toplamı en fazla k olan en uzun alt diziyi nasıl bulursunuz?

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

Test #1

Test #2

Test #3

Argümanlar

nums = [2, -1, 3, 1, -4, 2, 3]
k = 5

Beklenen Çıktı

5