1277。平方部分行列をすべて 1 で数えます
難易度: 中
トピック: 配列、動的計画法、行列
1 と 0 からなる m * n 行列を指定すると、すべて 1 を持つ 正方形 部分行列がいくつあるかを返します。
例 1:
例 2:
制約:
ヒント:
解決策:
動的計画法 (DP) を使用して、行列内の各セルで終わるすべて 1 の正方部分行列の数を追跡できます。これを達成するためのアプローチは次のとおりです:
DP マトリックス定義:
遷移式:
行列の各セル (i, j) について:
dp[i][j] = min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1]) + 1
- If `matrix[i][j]` is 0, `dp[i][j]` will be 0 because a square of ones cannot end at a cell with a zero.
すべての正方形を数える:
時間計算量:
このソリューションを PHP で実装してみましょう: 1277。平方部分行列をすべて 1 で数えます
dp[i][j] = min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1]) + 1
この解決策は効率的であり、問題で指定された制約を満たしています。
連絡先リンク
このシリーズが役立つと思われた場合は、GitHub で リポジトリ にスターを付けるか、お気に入りのソーシャル ネットワークで投稿を共有することを検討してください。あなたのサポートは私にとって大きな意味を持ちます!
このような役立つコンテンツがさらに必要な場合は、お気軽にフォローしてください:
以上がすべて 1 で正方部分行列を数えるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。