Menu
CoddyTech

Longest Subarray with Sum K

Даны целые числа nums и целевое значение k. Верните длину самого длинного подмассива, сумма элементов которого в точности равна k. Подмассив — это последовательность из нескольких подряд идущих элементов длиной не менее одного. Некоторые значения могут быть равны нулю или быть меньше нуля. Если ни один подмассив не даёт в сумме k, верните 0.

Функция

longestSubarrayWithSumK(nums: integer-array, k: integer) → integer
numsinteger-array
целые числа для поиска, включая отрицательные числа и нули
kinteger
точная сумма, которую должен иметь подмассив
Возвращаетinteger
длина самого длинного подмассива, сумма элементов которого равна k, или 0, если такого нет

Ограничения

  • 1 ≤ nums.length ≤ 2 × 104
  • -104 ≤ nums[i] ≤ 104
  • -109 ≤ k ≤ 109
  • Каждая префиксная сумма находится в диапазоне от -2 × 108 до 2 × 108, поэтому 32-разрядных целых чисел достаточно.
  • Верни 0, если сумма элементов ни одного подмассива не равна k.

Примеры

Ввод
nums = [2, -1, 3, 1, -4, 2, 3]k = 5
Вывод
5
Пояснение
Три последовательности в сумме дают 5: [2, 3] в конце, [2, -1, 3, 1] в начале и [3, 1, -4, 2, 3] с индекса 2 по индекс 6. Последняя — самая длинная, в ней 5 элементов.
challenge icon

Дополнительный вопрос

Как найти самый длинный подмассив, сумма которого не превышает k, при этом отрицательные значения по-прежнему допускаются?

Сбросить код
def longestSubarrayWithSumK(nums, k):
    # Напишите код здесь

Тест #1

Тест #2

Тест #3

Аргументы

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

Ожидаемый вывод

5