3097。 OR 至少 K II 的最短子數組
難度:中
主題:陣列、位元操作、滑動視窗
給你一個由非負整數組成的陣列nums和一個整數k。
如果一個陣列的所有元素按位或至少 k.,則該數組稱為特殊
傳回最短特殊非空子數組1nums的長度,如果不存在特殊子數組則回傳-1。
範例1:
範例2:
範例 3:
約束:
提示:
解:
我們可以使用滑動視窗方法結合位元操作來追蹤視窗中元素的 OR。
讓我們用 PHP 實作這個解:3097。 OR 至少 K II 的最短子數組
<?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 ?>
最小子數組長度方法:
orNum 和 undoOrNum 方法:
時間複雜度:
4*時間複雜度*:
聯絡連結
如果您發現本系列有幫助,請考慮在 GitHub 上給 存儲庫 一個星號或在您最喜歡的社交網絡上分享該帖子? 。您的支持對我來說意義重大!
如果您想要更多類似的有用內容,請隨時關注我:
子數組:子數組是數組中連續的非空元素序列。 ↩
以上是OR 至少 K II 的最短子數組的詳細內容。更多資訊請關注PHP中文網其他相關文章!