ホームページ >バックエンド開発 >PHPチュートリアル >ビットごとの OR サブセットの最大数をカウントする
2044年。最大ビット単位 OR サブセットの数をカウント
難易度: 中
トピック: 配列、バックトラッキング、ビット操作、列挙
整数配列 nums を指定すると、nums のサブセットの ビットごとの OR が可能な最大を見つけ、空でない異なるサブセットの 数 最大ビット単位の OR.
配列 a は、b の一部 (おそらくゼロ) 要素を削除することによって b から a を取得できる場合、配列 b のサブセット です。選択された要素のインデックスが異なる場合、2 つのサブセットは異なるとみなされます。
配列 a のビット単位の OR は、a[0] OR a[1] OR ... OR a[a.length - 1] (0-indexed) と等しくなります。
例 1:
例 2:
例 3:
制約:
ヒント:
解決策:
次の手順に従うことができます:
最大ビット単位 OR を計算する: サブセットの最大ビット単位 OR は、配列のすべての要素に対してビット単位 OR 演算を実行することで決定できます。これにより、可能な最大のビット単位の OR が得られます。
: 配列のサイズが小さい (最大 16) ため、ビット操作手法を使用して考えられるすべてのサブセットを列挙できます。サイズ n の配列の場合、2^n 個の可能なサブセットがあります。
: 各サブセットについて、そのビット単位の OR を計算し、それが最大のビット単位の OR と一致するかどうかを確認します。存在する場合は、カウンターをインクリメントします。
このソリューションを PHP で実装してみましょう: 2044。最大ビット単位 OR サブセットの数をカウント
<?php /** * @param Integer[] $nums * @return Integer */ function countMaxBitwiseORSubsets($nums) { ... ... ... /** * go to ./solution.php */ } // Example usage $nums1 = [3, 1]; echo countMaxBitwiseORSubsets($nums1) . "\n"; // Output: 2 $nums2 = [2, 2, 2]; echo countMaxBitwiseORSubsets($nums2) . "\n"; // Output: 7 $nums3 = [3, 2, 1, 5]; echo countMaxBitwiseORSubsets($nums3) . "\n"; // Output: 6 ?>
最大ビット単位 OR 計算:
サブセット列挙:
有効なサブセット数:
このソリューションは制約を考慮すると効率的であり、サイズが 16 までの配列に対して適切に機能するため、最大 65,535 個のサブセットが評価されます。
連絡先リンク
このシリーズが役立つと思われた場合は、GitHub で リポジトリ にスターを付けるか、お気に入りのソーシャル ネットワークで投稿を共有することを検討してください。あなたのサポートは私にとって大きな意味を持ちます!
このような役立つコンテンツがさらに必要な場合は、お気軽にフォローしてください:
以上がビットごとの OR サブセットの最大数をカウントするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。