## Time: O(N)
## Space: O(N)
## where N = len(nums)
class Solution:
def minOperations(self, nums: List[int]) -> int:
N_nums = len(nums)
def solve_memo (idx, been_toggled, memo):
if (idx,been_toggled) not in memo:
if idx == N_nums-1:
if nums[idx] == 1:
if been_toggled:
result = 1
else:
result = 0
else:
if been_toggled:
result = 0
else:
result = 1
else:
if nums[idx] == 1:
if been_toggled:
result = 1 + solve_memo(idx+1,not been_toggled, memo)
else:
result = solve_memo(idx+1, been_toggled, memo)
else:
if been_toggled:
result = solve_memo(idx+1, been_toggled, memo)
else:
result = 1 + solve_memo(idx+1, not been_toggled, memo)
memo[(idx,been_toggled)] = result
return memo[(idx,been_toggled)]
memo = {}
solve_memo(0, False, memo)
return memo[(0,False)]