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

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[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 ` `?> `

Output:

```2
```

Time Complexity: O(N)

My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.