3192. Minimum Operations to Make Binary Array Elements Equal to One II

3192. Minimum Operations to Make Binary Array Elements Equal to One II

Description

You are given a binary array nums.

You can do the following operation on the array any number of times (possibly zero):

  • Choose any index i from the array and flip all the elements from index i to the end of the array.

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.

Example 1:

1
2
3
Input: nums = [0,1,1,0,1]

Output: 4

Explanation:

We can do the following operations:

  • Choose the index i = 1. The resulting array will be nums = [0,0 ,0 ,1 ,0 ].
  • Choose the index i = 0. The resulting array will be nums = [1 ,1 ,1 ,0 ,1 ].
  • Choose the index i = 4. The resulting array will be nums = [1,1,1,0,0 ].
  • Choose the index i = 3. The resulting array will be nums = [1,1,1,1 ,1 ].

Example 2:

1
2
3
Input: nums = [1,0,0,0]

Output: 1

Explanation:

We can do the following operation:

  • Choose the index i = 1. The resulting array will be nums = [1,1 ,1 ,1 ].

Constraints:

  • 1 <= nums.length <= 10^5
  • 0 <= nums[i] <= 1

Hints/Notes

  • Biweekly Contest 133

Solution

Language: C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
public:
int minOperations(vector<int>& nums) {
int size = nums.size(), numOps = 0, cur = 0;

for (int i = 0; i < nums.size(); i++) {
if (nums[i] == cur) {
numOps++;
cur ^= 1;
}
}
return numOps;
}
};