Menu
CoddyTech

Split Array Largest Sum

Sana negatif olmayan tam sayılardan oluşan bir nums dizisi ve bir k tam sayısı veriliyor. nums dizisini, her biri boş olmayan ve yan yana gelen değerlerden oluşan, sıralarını koruyan tam olarak k parçaya böl. Her parçanın bir toplamı vardır ve bölmenin maliyeti bu toplamların en büyüğüdür.

k parçaya yapılan herhangi bir bölmenin ulaşabileceği en küçük maliyeti döndür.

Fonksiyon

splitArray(nums: integer-array, k: integer) → integer
numsinteger-array
negatif olmayan değerler, sırasıyla
kinteger
onları kesmek için bitişik parça sayısı
Döndürürinteger
en büyük parça toplamının mümkün olan en küçük değeri

Kısıtlar

  • 1 ≤ nums.length ≤ 5000
  • 0 ≤ nums[i] ≤ 105
  • 1 ≤ k ≤ nums.length
  • Her parça en az bir değer içerir. Değerlerinin tümü 0 olan bir parçanın toplamı 0'dır; buna izin verilir.

Örnekler

Girdi
nums = [6, 2, 9, 4, 7, 3]k = 3
Çıktı
13
Açıklama
[6, 2], [9, 4], [7, 3] bölmesinin toplamları 8, 13 ve 10 olduğundan maliyeti 13'tür. Maliyeti 12 olan bir bölme yoktur: parçaları soldan sağa, her toplam en fazla 12 olacak şekilde yerleştirince [6, 2], [9], [4, 7], [3] elde edilir; oysa yalnızca üç parçaya izin verilir.

lock iconGönderirken +20 gizli test

challenge icon

Ek soru

Her açgözlü kontrol, tüm n değerlerini okur. Önek toplamlarıyla bir kontrol, bunun yerine ikili arama kullanarak her parçanın nerede bittiğini bulabilir. k küçük ve nums uzun olduğunda yöntemin tamamı ne kadar hızlı olur?

Kodu sıfırla
def splitArray(nums, k):
    # Kodu buraya yazın
Test durumları

Durum 1

Durum 2

Durum 3

Girdi

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

Beklenen

13