在仅包含 0 和 1 的数组 A 中,一次 K 位翻转包括选择一个长度为 K 的(连续)子数组,同时将子数组中的每个 0 更改为 1,而每个 1 更改为 0。
返回所需的 K 位翻转的最小次数,以便数组没有值为 0 的元素。如果不可能,返回 -1。
示例 1:
1 2 3 输入:A = [0,1,0], K = 1 输出:2 解释:先翻转 A[0],然后翻转 A[2]。 
示例 2:
1 2 3 输入:A = [1,1,0], K = 2 输出:-1 解释:无论我们怎样翻转大小为 2 的子数组,我们都不能使数组变为 [1,1,1]。 
示例 3:
1 2 3 4 5 6 7 输入:A = [0,0,0,1,0,1,1,0], K = 3 输出:3 解释: 翻转 A[0],A[1],A[2]: A变成 [1,1,1,1,0,1,1,0] 翻转 A[4],A[5],A[6]: A变成 [1,1,1,1,1,0,0,0] 翻转 A[5],A[6],A[7]: A变成 [1,1,1,1,1,1,1,1] 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 func  minKBitFlips (A []int , K int )  int     size := len (A);     queue := make ([]int , 0 );     res := 0 ;     for  index, value := range  A {         if  len (queue) > 0  {             if  queue[0 ] + K -1  < index {             queue = queue[1 :];             }         }         if  len (queue)%2  != value{             continue ;         }                  queue = append (queue, index);         if  index + K  > size{             return  -1 ;         }         res += 1 ;     }     return  res }