Menu
CoddyTech

Split Array Largest Sum

Otrzymujesz tablicę nums nieujemnych liczb całkowitych oraz liczbę całkowitą k. Podziel nums dokładnie na k części, z których każda jest niepustym ciągiem sąsiadujących wartości, a części zachowują swoją kolejność. Każda część ma sumę, a kosztem podziału jest największa z tych sum.

Zwróć najmniejszy koszt, jaki można uzyskać, dzieląc tablicę na k części.

Funkcja

splitArray(nums: integer-array, k: integer) → integer
numsinteger-array
wartości nieujemne, w kolejności
kinteger
liczba sąsiadujących części, na które należy je podzielić
Zwracainteger
najmniejsza możliwa wartość sumy największej części

Ograniczenia

  • 1 ≤ nums.length ≤ 5000
  • 0 ≤ nums[i] ≤ 105
  • 1 ≤ k ≤ nums.length
  • Każda część zawiera co najmniej jedną wartość. Część, której wszystkie wartości wynoszą 0, sumuje się do 0, co jest dozwolone.

Przykłady

Wejście
nums = [6, 2, 9, 4, 7, 3]k = 3
Wyjście
13
Wyjaśnienie
Podział [6, 2], [9, 4], [7, 3] kosztuje 13. Żaden podział nie kosztuje 12: pakowanie części od lewej do prawej przy limicie 12 daje [6, 2], [9], [4, 7], [3], czyli cztery części.
challenge icon

Pytanie dodatkowe

Dzięki sumom prefiksowym zachłanne sprawdzenie może znaleźć, gdzie kończy się każda część, za pomocą wyszukiwania binarnego. Jak szybko działa cała metoda, gdy k jest małe?

Zresetuj kod
def splitArray(nums, k):
    # Wpisz kod tutaj

Test #1

Test #2

Test #3

Argumenty

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

Oczekiwany wynik

13