# Minimum number of 1’s to be replaced in a binary array

• Difficulty Level : Medium
• Last Updated : 18 May, 2021

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 in the array such that arr[i] = 0 then arr[i-1] and arr[i+1] both should not be equals to at the same time.
That is, for any index 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: Indexs 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 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 ``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

 `= 0) && ``\$A``[``\$i` `- 1] == 1 &&``          ``\$A``[``\$i` `+ 1] == 1 && ``\$A``[``\$i``] == 0)``        ``{``            ``\$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(``\$A``);` `echo` `minChanges(``\$A``, ``\$n``);` `// This code is contributed``// by Ankita_Saini``?>`

## Javascript

 ``
Output:
`2`

Time Complexity: O(N)

My Personal Notes arrow_drop_up