Minimum number of 1's to be replaced in a binary array (original) (raw)

Last Updated : 08 Sep, 2022

Given a binary array arr[] of zero's and one's only. The task is to find the minimum number of one's to be changed to zero such if there exist any index i in the array such that arr[i] = 0 then arr[i-1] and arr[i+1] both should not be equals to 1 at the same time.

That is, for any index i the below condition should fail:

if (arr[i]== 0): (arr[i-1] == 1) && (arr[i+1] == 1)

Note: 1-based indexing is considered for the array.

Examples:

Input : arr[] = { 1, 1, 0, 1, 1, 0, 1, 0, 1, 0 }
Output : 2
Explanation: Indexes 2 and 7 OR 4 and 7 can be changed to zero.

Input : arr[] = { 1, 1, 0, 0, 0 }
Output : 0

Approach: The idea is that, whenever we found condition like arr[i-1] = 1 \;and\; arr[i] = 0 \;and \;arr[i+1] = 1 we simply changed the value of (i+1)th index to zero(0). So that index between (i-1)-th and (i+1)-th index is safe.

Below is the implementation of the above approach:

C++ `

// C++ program to find minimum number // of 1's to be replaced to 0's #include <bits/stdc++.h> using namespace std;

// Function to find minimum number // of 1's to be replaced to 0's int minChanges(int A[], int n) { int cnt = 0;

for (int i = 0; i < n - 2; ++i) {

    if ((i - 1 >= 0) && A[i - 1] == 1
        && A[i + 1] == 1 && A[i] == 0) {
        A[i + 1] = 0;
        cnt++;
    }

}

// return final answer
return cnt;

}

// Driver program int main() { int A[] = { 1, 1, 0, 1, 1, 0, 1, 0, 1, 0 }; int n = sizeof(A) / sizeof(A[0]);

cout << minChanges(A, n);

return 0;

}

Java

// Java program to find minimum number // of 1's to be replaced to 0's import java.lang.; import java.util.;

class GFG { // Function to find minimum number // of 1's to be replaced to 0's static int minChanges(int[] A, int n) { int cnt = 0;

for (int i = 0; i < n - 2; ++i)
{

    if ((i - 1 >= 0) && A[i - 1] == 1 && 
                        A[i + 1] == 1 && 
                        A[i] == 0) 
    {
        A[i + 1] = 0;
        cnt++;
    }

}

// return final answer
return cnt;

}

// Driver Code public static void main(String args[]) { int[] A = { 1, 1, 0, 1, 1, 0, 1, 0, 1, 0 }; int n = A.length;

System.out.print(minChanges(A, n));

} }

// This code is contributed // by Akanksha Rai

Python3

Python 3 program to find minimum

number of 1's to be replaced to 0's

Function to find minimum number

of 1's to be replaced to 0's

def minChanges(A, n): cnt = 0 for i in range(n - 2): if ((i - 1 >= 0) and A[i - 1] == 1 and A[i + 1] == 1 and A[i] == 0): A[i + 1] = 0 cnt = cnt + 1

# return final answer
return cnt

Driver Code

A = [1, 1, 0, 1, 1, 0, 1, 0, 1, 0] n = len(A) print(minChanges(A, n))

This code is contributed

by Shashank_Sharma

C#

// C# program to find minimum number // of 1's to be replaced to 0's using System;

class GFG { // Function to find minimum number // of 1's to be replaced to 0's static int minChanges(int[] A, int n) { int cnt = 0;

for (int i = 0; i < n - 2; ++i)
{

    if ((i - 1 >= 0) && A[i - 1] == 1 && 
                        A[i + 1] == 1 && A[i] == 0) 
    {
        A[i + 1] = 0;
        cnt++;
    }

}

// return final answer
return cnt;

}

// Driver Code public static void Main() { int[] A = { 1, 1, 0, 1, 1, 0, 1, 0, 1, 0 }; int n = A.Length;

Console.Write(minChanges(A, n));

} }

// This code is contributed // by Akanksha Rai

PHP

i<i < i<n - 2; ++$i) { if (($i - 1 >= 0) && A[A[A[i - 1] == 1 && A[A[A[i + 1] == 1 && A[A[A[i] == 0) { A[A[A[i + 1] = 0; $cnt++; } } // return final answer return $cnt; } // Driver Code $A = array(1, 1, 0, 1, 1, 0, 1, 0, 1, 0); n=sizeof(n = sizeof(n=sizeof(A); echo minChanges($A, $n); // This code is contributed // by Ankita_Saini ?>

JavaScript

`

Complexity Analysis: