从左到右,碰到0就将当前以及后两位的值做异或操作,到数组结束全为1则返回操作次数,否则返回-1 参考了答案的,这题没有什么巧思。
from typing import List
class Solution:
def minOperations(self, nums: List[int]) -> int:
# 从左到右,碰到0就将当前以及后两位的值为1,到数组结束全为1则返回反转次数,否则返回-1
count = 0
n = len(nums)
for i in range(n):
if nums[i] == 0:
if i > n - 3:
return -1
nums[i] ^= 1
nums[i + 1] ^= 1
nums[i + 2] ^= 1
count += 1
return count