Menu
CoddyTech

Split Array Largest Sum

Дан массив nums из неотрицательных целых чисел и целое число k. Разделите nums ровно на k частей, каждая из которых представляет собой непустой последовательный отрезок значений, а части сохраняют исходный порядок. У каждой части есть сумма, а стоимость разбиения — наибольшая из этих сумм.

Верните наименьшую стоимость, которую можно получить при разбиении на k частей.

Функция

splitArray(nums: integer-array, k: integer) → integer
numsinteger-array
неотрицательные значения по порядку
kinteger
количество непрерывных частей, на которые нужно их разрезать
Возвращаетinteger
наименьшее возможное значение суммы самой большой части

Ограничения

  • 1 ≤ nums.length ≤ 5000
  • 0 ≤ nums[i] ≤ 105
  • 1 ≤ k ≤ nums.length
  • Каждая часть содержит как минимум одно значение. Сумма значений части, состоящей только из 0, равна 0, и это допустимо.

Примеры

Ввод
nums = [6, 2, 9, 4, 7, 3]k = 3
Вывод
13
Пояснение
Разбиение на части [6, 2], [9, 4], [7, 3] стоит 13. Ни одно разбиение не стоит 12: упаковка частей слева направо при ограничении 12 даёт [6, 2], [9], [4, 7], [3] — четыре части.
challenge icon

Дополнительный вопрос

С помощью префиксных сумм жадная проверка может найти конец каждой части бинарным поиском. Насколько быстрым становится весь метод, когда k мало?

Сбросить код
def splitArray(nums, k):
    # Напишите код здесь

Тест #1

Тест #2

Тест #3

Аргументы

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

Ожидаемый вывод

13