In an array A containing only 0s and 1s, a K-bit flip consists of choosing a (contiguous) subarray of length K 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.Example 1:Input: A = [0,1,0], K = 1Output: 2Explanation: Flip A[0], then flip A[2].Example 2:Input: A = [1,1,0], K = 2Output: -1Explanation: No matter how we flip subarrays of size 2, we can’t make the array become [1,1,1].Example 3:Input: A = [0,0,0,1,0,1,1,0], K = 3Output: 3Explanation:Flip A[0],A[1],A[2]: A becomes [1,1,1,1,0,1,1,0]Flip A[4],A[5],A[6]: A becomes [1,1,1,1,1,0,0,0]Flip A[5],A[6],A[7]: A becomes [1,1,1,1,1,1,1,1]Note:1 <= A.length <= 300001 <= K <= A.length难度:Hard题目:在一个只包含0和1的数组中,每次可以翻转K个元素,其中所有的0翻转成1,1翻转成0. 返回其最小的翻转次数。如果不存在则返回-1.思路:贪心算法,每次找到第1个0后翻转从该元素开始的K个元素。Runtime: 140 ms, faster than 71.57% of Java online submissions for Minimum Number of K Consecutive Bit Flips.Memory Usage: 48.4 MB, less than 6.43% of Java online submissions for Minimum Number of K Consecutive Bit Flips.class Solution { public int minKBitFlips(int[] A, int K) { int i = 0, count = 0; while (i <= A.length - 1) { if (1 == A[i]) { i++; continue; } if (i + K > A.length) { return -1; } count++; for (int t = i; t < i + K; t++) { A[t] = (A[t] + 1) & 1; } } return count; }}