You are given a binary array nums.
You can do the following operation on the array any number of times (possibly zero):
Flipping an element means changing its value from 0 to 1, and from 1 to 0.
Return the minimum number of operations required to make all elements in nums equal to 1. If it is impossible, return -1.
Example 1:
Input: nums = [0,1,1,1,0,0]
Output: 3
Explanation:
We can do the following operations:
nums = [1,0,0,1,0,0].nums = [1,1,1,0,0,0].nums = [1,1,1,1,1,1].Example 2:
Input: nums = [0,1,1,1]
Output: -1
Explanation:
It is impossible to make all elements equal to 1.
Constraints:
3 <= nums.length <= 1050 <= nums[i] <= 1class Solution {
public int minOperations(int[] nums) {
int n = nums.length, lt = 0, rt = 2, flips = 0;
while (rt < n) {
if (nums[lt] == 0) {
nums[lt] = 1;
nums[lt + 1] = 1 - nums[lt + 1];
nums[rt] = 1 - nums[rt];
flips++;
}
lt++;
rt++;
}
return ((nums[rt - 1] & nums[rt - 2]) & nums[rt - 3]) == 0 ? -1 : flips;
}
}