995. Minimum Number of K Consecutive Bit Flips
Hard
You are given a binary array nums and an integer k.
A k-bit flip is choosing a subarray of length k from nums and simultaneously changing every 0 in the subarray to 1, and every 1 in the subarray to 0.
Return the minimum number of k-bit flips required so that there is no 0 in the array. If it is not possible, return -1.
A subarray is a contiguous part of an array.
Example 1:
Example 2:
Example 3:
Flip nums[0],nums[1],nums[2]: nums becomes [1,1,1,1,0,1,1,0] Flip nums[4],nums[5],nums[6]: nums becomes [1,1,1,1,1,0,0,0] Flip nums[5],nums[6],nums[7]: nums becomes [1,1,1,1,1,1,1,1]
Constraints:
Solution:
class Solution { /** * @param Integer[] $nums * @param Integer $k * @return Integer */ function minKBitFlips($nums, $k) { $flipped = array_fill(0, count($nums), false); $validFlipsFromPastWindow = 0; $flipCount = 0; for ($i = 0; $i < count($nums); $i++) { if ($i >= $k) { if ($flipped[$i - $k]) { $validFlipsFromPastWindow--; } } if ($validFlipsFromPastWindow % 2 == $nums[$i]) { if ($i + $k > count($nums)) { return -1; } $validFlipsFromPastWindow++; $flipped[$i] = true; $flipCount++; } } return $flipCount; } }Contact Links
The above is the detailed content of . Minimum Number of K Consecutive Bit Flips. For more information, please follow other related articles on the PHP Chinese website!