3191. Minimum Operations to Make Binary Array Elements Equal to One I LeetCode Solution

In this guide, you will get 3191. Minimum Operations to Make Binary Array Elements Equal to One I LeetCode Solution with the best time and space complexity. The solution to Minimum Operations to Make Binary Array Elements Equal to One I problem is provided in various programming languages like C++, Java, and Python. This will be helpful for you if you are preparing for placements, hackathons, interviews, or practice purposes. The solutions provided here are very easy to follow and include detailed explanations.

Table of Contents

  1. Problem Statement
  2. Complexity Analysis
  3. Minimum Operations to Make Binary Array Elements Equal to One I solution in C++
  4. Minimum Operations to Make Binary Array Elements Equal to One I solution in Java
  5. Minimum Operations to Make Binary Array Elements Equal to One I solution in Python
  6. Additional Resources
3191. Minimum Operations to Make Binary Array Elements Equal to One I LeetCode Solution image

Problem Statement of Minimum Operations to Make Binary Array Elements Equal to One I

You are given a binary array nums.
You can do the following operation on the array any number of times (possibly zero):

Choose any 3 consecutive elements from the array and flip all of them.

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:

Choose the elements at indices 0, 1 and 2. The resulting array is nums = [1,0,0,1,0,0].
Choose the elements at indices 1, 2 and 3. The resulting array is nums = [1,1,1,0,0,0].
Choose the elements at indices 3, 4 and 5. The resulting array is nums = [1,1,1,1,1,1].

See also  419. Battleships in a Board LeetCode Solution

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 <= 105
0 <= nums[i] <= 1

Complexity Analysis

  • Time Complexity: O(n)
  • Space Complexity: O(1)

3191. Minimum Operations to Make Binary Array Elements Equal to One I LeetCode Solution in C++

class Solution {
 public:
  int minOperations(vector<int>& nums) {
    const int n = nums.size();
    int ans = 0;

    for (int i = 0; i + 2 < n; ++i)
      if (nums[i] == 0) {
        nums[i + 1] ^= 1;
        nums[i + 2] ^= 1;
        ++ans;
      }

    return nums[n - 1] == 0 || nums[n - 2] == 0 ? -1 : ans;
  }
};
/* code provided by PROGIEZ */

3191. Minimum Operations to Make Binary Array Elements Equal to One I LeetCode Solution in Java

class Solution {
  public int minOperations(int[] nums) {
    final int n = nums.length;
    int ans = 0;

    for (int i = 0; i + 2 < n; ++i)
      if (nums[i] == 0) {
        nums[i + 1] ^= 1;
        nums[i + 2] ^= 1;
        ++ans;
      }

    return nums[n - 1] == 0 || nums[n - 2] == 0 ? -1 : ans;
  }
}
// code provided by PROGIEZ

3191. Minimum Operations to Make Binary Array Elements Equal to One I LeetCode Solution in Python

class Solution:
  def minOperations(self, nums: list[int]) -> int:
    ans = 0

    for i in range(len(nums) - 2):
      if nums[i] == 0:
        nums[i + 1] ^= 1
        nums[i + 2] ^= 1
        ans += 1

    return -1 if nums[-1] == 0 or nums[-2] == 0 else ans
# code by PROGIEZ

Additional Resources

Happy Coding! Keep following PROGIEZ for more updates and solutions.