. - 力扣(LeetCode)

从左到右,碰到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