Menu
CoddyTech

Maximum Subarray

Trung bìnhQuy hoạch độngpython iconjava iconcpp iconc iconjs icon+10

Bạn nhận được một danh sách số nguyên nums. Mảng con (subarray) là một đoạn gồm các phần tử liền kề, không có khoảng trống, và phải chứa ít nhất một phần tử. Hãy trả về tổng lớn nhất mà bất kỳ mảng con nào của nums có thể đạt được. Bạn chỉ trả về tổng, không trả về chính mảng con.

Hàm

maxSubArray(nums: integer-array) → integer
numsinteger-array
danh sách số nguyên có ít nhất một phần tử
Trả vềinteger
tổng lớn nhất của một dãy không rỗng gồm các phần tử liền kề

Ràng buộc

  • 1 ≤ nums.length ≤ 105
  • -104 ≤ nums[i] ≤ 104
  • Đáp án luôn nằm trong phạm vi số nguyên có dấu 32 bit.

Ví dụ

Đầu vào
nums = [2, -4, 3, -1, 5, -6, 1]
Đầu ra
7
Giải thích
Dãy [3, -1, 5] có tổng bằng 7. Kéo dài sang trái thì cộng thêm -4 rồi 2, tổng cộng giảm 2. Kéo dài sang phải thì cộng thêm -6 rồi 1, tổng cộng giảm 5. Không có dãy nào khác cho kết quả tốt hơn.
challenge icon

Câu hỏi mở rộng

Bạn cũng có thể giải bài toán bằng phương pháp chia để trị trong O(n log n), chia danh sách làm đôi và xử lý các dãy liên tiếp băng qua điểm giữa không?

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

Kiểm thử #1

Kiểm thử #2

Đối số

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

Đầu ra mong đợi

7