3097。少なくとも K II
の OR を持つ最短のサブ配列難易度: 中
トピック: 配列、ビット操作、スライディング ウィンドウ
非負の整数の配列 nums と整数 k が与えられます。
配列のすべての要素のビット単位の OR が 少なくとも k である場合、配列は 特別 と呼ばれます。
数値の空ではない最も短い特殊なサブ配列1の長さを返します。特殊なサブ配列が存在しない場合は、-1を返します。
例 1:
例 2:
例 3:
制約:
ヒント:
解決策:
ビット操作と組み合わせたスライディング ウィンドウ アプローチを使用して、ウィンドウ内の要素の OR を追跡できます。
このソリューションを PHP で実装してみましょう: 3097。少なくとも K II
の OR を持つ最短のサブ配列
<?php class Solution { const K_MAX_BIT = 30; // Maximum bit position we will check /** * @param Integer[] $nums * @param Integer $k * @return Integer */ function minimumSubarrayLength($nums, $k) { ... ... ... /** * go to ./solution.php */ } /** * @param $ors * @param $num * @param $count * @return int */ private function orNum($ors, $num, &$count) { // Update the ors value and count bits that are set ... ... ... /** * go to ./solution.php */ } /** * @param $ors * @param $num * @param $count * @return int */ private function undoOrNum($ors, $num, &$count) { // Reverse the update on ors and count bits that are reset ... ... ... /** * go to ./solution.php */ } } // Example usage $solution = new Solution(); $nums1 = [1, 2, 3]; $k1 = 2; echo $solution->minimumSubarrayLength($nums1, $k1) . "\n"; // Output: 1 $nums2 = [2, 1, 8]; $k2 = 10; echo $solution->minimumSubarrayLength($nums2, $k2) . "\n"; // Output: 3 $nums3 = [1, 2]; $k3 = 0; echo $solution->minimumSubarrayLength($nums3, $k3) . "\n"; // Output: 1 ?>
minimumSubarrayLength メソッド:
orNum メソッドと undoOrNum メソッド:
時間計算量:
4*時間計算量*:
連絡先リンク
このシリーズが役立つと思われた場合は、GitHub で リポジトリ にスターを付けるか、お気に入りのソーシャル ネットワークで投稿を共有することを検討してください。あなたのサポートは私にとって大きな意味を持ちます!
このような役立つコンテンツがさらに必要な場合は、お気軽にフォローしてください:
サブ配列 : サブ配列は、配列内の要素の連続した空でないシーケンスです。 ↩
以上が少なくとも K II の OR を持つ最短のサブアレイの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。