Menu
CoddyTech

Split Array Largest Sum

Bạn nhận được một mảng nums gồm các số nguyên không âm và một số nguyên k. Chia nums thành đúng k phần, mỗi phần là một dãy không rỗng gồm các giá trị liền kề và giữ nguyên thứ tự. Mỗi phần có một tổng, chi phí của cách chia là tổng lớn nhất trong các phần đó.

Trả về chi phí nhỏ nhất mà một cách chia thành k phần có thể đạt được.

Hàm

splitArray(nums: integer-array, k: integer) → integer
numsinteger-array
các giá trị không âm, theo thứ tự
kinteger
số phần liên tiếp cần chia chúng thành
Trả vềinteger
giá trị nhỏ nhất có thể của tổng phần lớn nhất

Ràng buộc

  • 1 ≤ nums.length ≤ 5000
  • 0 ≤ nums[i] ≤ 105
  • 1 ≤ k ≤ nums.length
  • Mỗi phần chứa ít nhất một giá trị. Một phần có tất cả giá trị bằng 0 sẽ có tổng bằng 0, điều đó được phép.

Ví dụ

Đầu vào
nums = [6, 2, 9, 4, 7, 3]k = 3
Đầu ra
13
Giải thích
Cách chia [6, 2], [9, 4], [7, 3] có chi phí là 13. Không cách chia nào có chi phí là 12: xếp các phần từ trái sang phải, mỗi phần không vượt quá 12, ta được [6, 2], [9], [4, 7], [3], tổng cộng bốn phần.
challenge icon

Câu hỏi mở rộng

Với tổng tiền tố, một phép kiểm tra tham lam có thể tìm điểm kết thúc của mỗi phần bằng tìm kiếm nhị phân. Phương pháp này chạy nhanh đến mức nào khi k nhỏ?

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

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

nums = [6, 2, 9, 4, 7, 3]
k = 3

Đầu ra mong đợi

13