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
That is, for any index
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
Below is the implementation of the above approach:
// 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 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 |
# 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# 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 // PHP 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 function minChanges( $A , $n )
{ $cnt = 0;
for ( $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 $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 ?> |
<script> // Javascript 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 function minChanges(A, n)
{ var cnt = 0;
for ( var 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;
} var A = [ 1, 1, 0, 1, 1, 0, 1, 0, 1, 0 ];
var n = A.length;
document.write( minChanges(A, n)); // This code is contributed by SoumikMondal </script> |
Output
2
Complexity Analysis:
- Time Complexity: O(N)
- Auxiliary Space: O(1)