Menu
CoddyTech

Longest Subarray with Sum K

정수 배열 nums와 목표값 k가 주어졌을 때, 원소의 합이 정확히 k인 가장 긴 부분 배열의 길이를 반환하세요. 부분 배열은 연속된 원소가 하나 이상 이어진 구간입니다. 값 중에는 0이나 음수가 있을 수 있습니다. 합이 k인 부분 배열이 없으면 0을 반환하세요.

함수

longestSubarrayWithSumK(nums: integer-array, k: integer) → integer
numsinteger-array
검색할 정수(음수와 0 포함)
kinteger
부분 배열이 가져야 하는 정확한 합
반환값integer
합이 k가 되는 가장 긴 부분 배열의 길이. 그런 부분 배열이 없으면 0

제약 조건

  • 1 ≤ nums.length ≤ 2 × 104
  • -104 ≤ nums[i] ≤ 104
  • -109 ≤ k ≤ 109
  • 모든 누적 합은 -2 × 108에서 2 × 108 사이이므로 32비트 정수로 충분합니다.
  • 어떤 부분 배열의 합도 k가 되지 않으면 0을 반환하세요.

예제

입력
nums = [2, -1, 3, 1, -4, 2, 3]k = 5
출력
5
설명
세 개의 연속 구간의 합은 5입니다. 끝에서 시작하는 [2, 3], 시작에서 시작하는 [2, -1, 3, 1], 인덱스 2부터 6까지의 [3, 1, -4, 2, 3]입니다. 마지막 구간이 가장 길며, 원소가 5개입니다.
challenge icon

후속 질문

음수 값도 허용하면서 합이 k 이하인 가장 긴 부분 배열을 어떻게 찾을 수 있을까요?

코드 초기화
def longestSubarrayWithSumK(nums, k):
    # 여기에 코드를 작성하세요

테스트 #1

테스트 #2

테스트 #3

인자들

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

예상 출력

5