İçeriğe atla
ΣDSA Patterns
Menü
Dil

Cevap Üzerinde İkili Arama

Rehber 1 / 6 · Yol 1 / 6

Etkileşimli

Zihinsel model

Bu problem için animasyonlu çözüm. Adımları kaydır veya boşlukla duraklat; değişmezi yüksek sesle yeniden anlat.

Adım 1 / 6
7
2
5
10
8

lo = max = 10, hi = 32

[7,2,5,10,8]'i m=2 parçaya böl. En büyük parça toplamını küçült.

Demo önizleme: Bu çözümler otomatik test paketini geçiyor ama insan tarafından incelenmedi. Trade-off ve yazıları taslak olarak değerlendirin.

Split Array Largest Sum

Problem (yeniden ifade)

nums dizisini m boş olmayan bitişik alt diziye böl. Amaç, alt dizi toplamlarının en büyüğünü olabildiğince küçük tutmak; o en büyük toplamın minimumunu döndür.

Sezgi

Uygulanabilirlik izin verilen maks toplamda monotoniktir. Cevabı ikili ara.

Yaklaşımlar

Maks toplam üzerinde ikili arama

Doğrulanmadı
Zaman O(n log S)Alan O(1)

Fikir. lo=max(nums), hi=sum(nums). canSplit(mid): greedy gereken parça sayısı ≤ m.

Yürüyüş. [7,2,5,10,8], m=2 → cevap 18 ([7,2,5] ve [10,8]).

Trade-off. DP O(n²m); BS-on-answer mülakatlar için daha temiz.

Çözüm
export function splitArray(nums: number[], m: number): number {
  let lo = Math.max(...nums), hi = nums.reduce((a, b) => a + b, 0);
  const ok = (cap: number) => {
    let pieces = 1, load = 0;
    for (const x of nums) {
      if (load + x > cap) { pieces++; load = 0; }
      load += x;
    }
    return pieces <= m;
  };
  while (lo < hi) {
    const mid = lo + ((hi - lo) >> 1);
    if (ok(mid)) hi = mid; else lo = mid + 1;
  }
  return lo;
}
export function splitArray(nums: number[], m: number): number {
  let lo = Math.max(...nums), hi = nums.reduce((a, b) => a + b, 0);
  const ok = (cap: number) => {
    let pieces = 1, load = 0;
    for (const x of nums) {
      if (load + x > cap) { pieces++; load = 0; }
      load += x;
    }
    return pieces <= m;
  };
  while (lo < hi) {
    const mid = lo + ((hi - lo) >> 1);
    if (ok(mid)) hi = mid; else lo = mid + 1;
  }
  return lo;
}

Şablon bağlantısı

Maksimum yüke binary search; greedy bölme sayısı fizibilite kontrolü.

Yansıma