Menu
CoddyTech

Subarray Sum Equals K

Bạn nhận được một mảng số nguyên nums và một số nguyên k. Hãy đếm số mảng con có tổng các phần tử bằng chính xác k. Mảng con là một dãy gồm một hoặc nhiều phần tử liền kề. Hai mảng con được tính riêng nếu chúng bắt đầu hoặc kết thúc ở các vị trí khác nhau, ngay cả khi chúng chứa các giá trị giống nhau. Các giá trị có thể là số âm hoặc số không.

Hàm

subarraySum(nums: integer-array, k: integer) → integer
numsinteger-array
mảng số nguyên, có thể chứa các giá trị âm và số 0
kinteger
tổng mà một mảng con phải đạt được để được tính
Trả vềinteger
số mảng con có tổng các phần tử bằng k

Ràng buộc

  • 1 ≤ nums.length ≤ 2 × 104
  • -1000 ≤ nums[i] ≤ 1000
  • -107 ≤ k ≤ 107
  • Một mảng dài như vậy có nhiều nhất 200,010,000 mảng con, nên đáp án nằm trong phạm vi của số nguyên có dấu 32 bit.

Ví dụ

Đầu vào
nums = [3, 4, -7, 1, 3, 3, 1, -4]k = 7
Đầu ra
4
Giải thích
Bốn lần chạy có tổng bằng 7: [3, 4], [1, 3, 3], [3, 3, 1] và [3, 4, -7, 1, 3, 3]. Trong lần cuối, -7 triệt tiêu 3 và 4.
challenge icon

Câu hỏi mở rộng

Làm thế nào để bạn sửa lời giải nhằm trả về độ dài của mảng con dài nhất có tổng bằng k, vẫn trong thời gian O(n)?

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

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

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

Đầu ra mong đợi

4