Menu
CoddyTech

Minimum Size Subarray Sum

Bạn nhận được một số nguyên dương target và một mảng nums gồm các số nguyên dương. Hãy tìm mảng con ngắn nhất (một dãy gồm các phần tử liền kề) có tổng ít nhất bằng target, rồi trả về độ dài của nó. Nếu không có mảng con nào đạt đến target, hãy trả về 0.

Hàm

minSubArrayLen(target: integer, nums: integer-array) → integer
targetinteger
tổng mà một mảng con phải đạt hoặc vượt qua
numsinteger-array
mảng số nguyên dương
Trả vềinteger
Độ dài của mảng con ngắn nhất có tổng ít nhất bằng target, hoặc 0 nếu không có mảng nào như vậy

Ràng buộc

  • 1 ≤ target ≤ 109
  • 1 ≤ nums.length ≤ 2 × 104
  • 1 ≤ nums[i] ≤ 104

Ví dụ

Đầu vào
target = 15nums = [4, 2, 9, 3, 7, 1, 5]
Đầu ra
3
Giải thích
Không có hai phần tử liền kề nào đạt 15: cặp lớn nhất là 9 + 3 = 12. Có ba phần tử đạt mức đó: 4 + 2 + 9 = 15 và 9 + 3 + 7 = 19, vậy đáp án là 3.
challenge icon

Câu hỏi mở rộng

Nếu nums cũng có thể chứa số 0 và số âm, khiến cửa sổ trượt không còn hiệu quả, bạn sẽ giải bài toán này như thế nào?

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

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

target = 15
nums = [4, 2, 9, 3, 7, 1, 5]

Đầu ra mong đợi

3