class Solution:
def minKBitFlips(self, nums: List[int], k: int) -> int:
diff = [0]*((len(nums))+1)
res = 0
convert = 0
for i in range(len(nums)):
convert += diff[i]#3
if((nums[i]+convert) % 2 == 0):
if(i+k>len(nums)):
return -1
diff[i+k] = -1
convert +=1
res +=1
return res
1. res:最后的返回结果,共需要翻转几次
2. convert:记录nums中数字的翻转次数
3. diff:和convert一起使用,一个差分数组的形式,作用是将连续位后的翻转次数还原(convert+=diff[i])
4. 判断条件,当前数字加上翻转的次数,0翻转两次还是0,1翻转两次还是1
5. 终止条件,如果需要翻转且i+k>n则说明需要翻转