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

İki Boyutlu DP

Rehber 5 / 6 · Yol 5 / 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
1
0
1
1
1
1
1
1
1

side = 1 + min(up, left, diag)

1'lerden maximal kare. dp[r][c] = sağ-altı burada olan karenin kenarı.

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

Maximal Square

Problem (yeniden ifade)

‘0’/‘1’ ikili matrisi. Yalnızca 1 içeren en büyük karenin alanını döndür.

Sezgi

dp[i][j] = (i-1,j-1)’de biten max kare kenarı. Hücre 1 ise: 1+min(üst, sol, çapraz).

Yaklaşımlar

Izgara üzerinde kenar-uzunluğu DP

Doğrulanmadı
Zaman O(mn)Alan O(mn)

Fikir. Yalnızca ‘1’ hücresi uzatabilir; darboğaz üç komşunun min’i.

Yürüyüş. 2×2’lik birler bloğu kenar 2 → alan 4.

Trade-off. best*best (alan) döndür. Kaydırmalı 1B satır bellek O(n)’e iner.

Çözüm
export function maximalSquare(matrix: string[][]): number {
  const m = matrix.length;
  const n = matrix[0]!.length;
  const dp = Array.from({ length: m + 1 }, () => Array(n + 1).fill(0));
  let best = 0;
  for (let i = 1; i <= m; i++) {
    for (let j = 1; j <= n; j++) {
      if (matrix[i - 1]![j - 1] === "1") {
        dp[i]![j] =
          1 + Math.min(dp[i - 1]![j]!, dp[i]![j - 1]!, dp[i - 1]![j - 1]!);
        best = Math.max(best, dp[i]![j]!);
      }
    }
  }
  return best * best;
}
export function maximalSquare(matrix: string[][]): number {
  const m = matrix.length;
  const n = matrix[0]!.length;
  const dp = Array.from({ length: m + 1 }, () => Array(n + 1).fill(0));
  let best = 0;
  for (let i = 1; i <= m; i++) {
    for (let j = 1; j <= n; j++) {
      if (matrix[i - 1]![j - 1] === "1") {
        dp[i]![j] =
          1 + Math.min(dp[i - 1]![j]!, dp[i]![j - 1]!, dp[i - 1]![j - 1]!);
        best = Math.max(best, dp[i]![j]!);
      }
    }
  }
  return best * best;
}

Şablon bağlantısı

Durumu yol sayısı değil geometrik boyut olan ızgara DP.

Yansıma