1072。最大数の等しい行を得るために列を反転します
難易度: 中
トピック: 配列、ハッシュ テーブル、行列
m x n のバイナリ行列が与えられます。
行列内の任意の数の列を選択し、その列内のすべてのセルを反転することができます (つまり、セルの値を 0 から 1、またはその逆に変更します)。
一定回数の反転後にすべての値が等しい行の最大数を返します。
例 1:
例 2:
例 3:
制約:
ヒント:
解決策:
ハッシュ マップを利用して、特定の列を反転することで同一にすることができる行をグループ化できます。同一にすることができる行は、同じパターンまたは相補的なパターン (ビットごとの否定) のいずれかを持ちます。
段階的な解決策は次のとおりです:
このソリューションを PHP で実装してみましょう: 1072。最大数の等しい行を得るために列を反転
<?php /** * @param Integer[][] $matrix * @return Integer */ function maxEqualRowsAfterFlips($matrix) { ... ... ... /** * go to ./solution.php */ } // Example usage $matrix1 = [[0, 1], [1, 1]]; $matrix2 = [[0, 1], [1, 0]]; $matrix3 = [[0, 0, 0], [0, 0, 1], [1, 1, 0]]; echo maxEqualRowsAfterFlips($matrix1) . "\n"; // Output: 1 echo maxEqualRowsAfterFlips($matrix2) . "\n"; // Output: 2 echo maxEqualRowsAfterFlips($matrix3) . "\n"; // Output: 2 ?>
このソリューションは制約を遵守しており、問題のサイズに対して効率的です。
連絡先リンク
このシリーズが役立つと思われた場合は、GitHub で リポジトリ にスターを付けるか、お気に入りのソーシャル ネットワークで投稿を共有することを検討してください。あなたのサポートは私にとって大きな意味を持ちます!
このような役立つコンテンツがさらに必要な場合は、お気軽にフォローしてください:
以上が最大数の等しい行を得るために列を反転するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。