Menu
CoddyTech

Split Array Largest Sum

Kamu mendapatkan sebuah array nums berisi bilangan bulat nonnegatif dan sebuah bilangan bulat k. Bagi nums menjadi tepat k bagian, dengan setiap bagian berupa rangkaian nilai bersebelahan yang tidak kosong dan urutan bagian tetap dipertahankan. Setiap bagian memiliki jumlah, dan biaya pembagian adalah jumlah terbesar dari bagian-bagian tersebut.

Kembalikan biaya terkecil yang dapat dicapai dengan membagi menjadi k bagian.

Fungsi

splitArray(nums: integer-array, k: integer) → integer
numsinteger-array
nilai-nilai nonnegatif, secara berurutan
kinteger
jumlah bagian berurutan untuk membaginya
Mengembalikaninteger
nilai terkecil yang mungkin dari jumlah bagian terbesar

Batasan

  • 1 ≤ nums.length ≤ 5000
  • 0 ≤ nums[i] ≤ 105
  • 1 ≤ k ≤ nums.length
  • Setiap bagian memiliki setidaknya satu nilai. Bagian yang semua nilainya 0 berjumlah 0, dan itu diperbolehkan.

Contoh

Input
nums = [6, 2, 9, 4, 7, 3]k = 3
Output
13
Penjelasan
Pembagian [6, 2], [9, 4], [7, 3] membutuhkan biaya 13. Tidak ada pembagian yang membutuhkan biaya 12: mengemas bagian-bagian dari kiri ke kanan dengan batas 12 menghasilkan [6, 2], [9], [4, 7], [3], sebanyak empat bagian.
challenge icon

Pertanyaan lanjutan

Dengan jumlah prefiks, pemeriksaan greedy dapat menemukan akhir setiap bagian menggunakan pencarian biner. Seberapa cepat keseluruhan metode ini jika k kecil?

Reset kode
def splitArray(nums, k):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

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

Output yang diharapkan

13