Related Articles
Minimum number of 1’s to be replaced in a binary array
• Difficulty Level : Medium
• Last Updated : 30 Nov, 2018

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

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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);`` ` `    ``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``?>`
Output:
```2
```

Time Complexity: O(N)

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up