Menu
CoddyTech

Longest Subarray with Sum K

Cho các số nguyên nums và giá trị mục tiêu k, hãy trả về độ dài của mảng con dài nhất có tổng các phần tử đúng bằng k. Mảng con là một đoạn gồm các phần tử liên tiếp, có độ dài ít nhất một. Một số giá trị có thể bằng không hoặc nhỏ hơn không. Nếu không có mảng con nào có tổng bằng k, hãy trả về 0.

Hàm

longestSubarrayWithSumK(nums: integer-array, k: integer) → integer
numsinteger-array
các số nguyên cần tìm, bao gồm cả số âm và số không
kinteger
tổng chính xác mà mảng con phải có
Trả vềinteger
độ dài của mảng con dài nhất có tổng bằng k, hoặc 0 nếu không có mảng nào như vậy

Ràng buộc

  • 1 ≤ nums.length ≤ 2 × 104
  • -104 ≤ nums[i] ≤ 104
  • -109 ≤ k ≤ 109
  • Mọi tổng tiền tố đều nằm trong khoảng từ -2 × 108 đến 2 × 108, vì vậy số nguyên 32 bit là đủ.
  • Trả về 0 khi không có mảng con nào có tổng bằng k.

Ví dụ

Đầu vào
nums = [2, -1, 3, 1, -4, 2, 3]k = 5
Đầu ra
5
Giải thích
Ba đoạn liên tiếp có tổng bằng 5: [2, 3] ở cuối, [2, -1, 3, 1] ở đầu và [3, 1, -4, 2, 3] từ chỉ số 2 đến 6. Đoạn cuối dài nhất, gồm 5 phần tử.
challenge icon

Câu hỏi mở rộng

Làm thế nào để tìm mảng con dài nhất có tổng không vượt quá k, trong đó vẫn cho phép các giá trị âm?

Đặt lại code
def longestSubarrayWithSumK(nums, k):
    # Viết code ở đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

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

Đầu ra mong đợi

5