Given a binary array of N numbers. The task is to find the smallest index such that there are either no 1’s or 0’s to the right of the index.
Note: The array will have at least one 0 and one 1.
Examples:
Input: a[] = {1, 1, 1, 0, 0, 1, 0, 1, 1}
Output: 6
At 6th index, there are no 0’s to the right of the index.
Input: a[] = {0, 1, 0, 0, 0}
Output: 1
Approach: Store the rightmost occurring index of both 1 and 0 and return the minimum of both.
Below is the implementation of the above approach:
C++
// C++ program to implement // the above approach #include <bits/stdc++.h> using namespace std; // Function to find the smallest index // such that there are no 0 or 1 to its right int smallestIndex( int a[], int n) { // Initially int right1 = 0, right0 = 0; // Traverse in the array for ( int i = 0; i < n; i++) { // Check if array element is 1 if (a[i] == 1) right1 = i; // a[i] = 0 else right0 = i; } // Return minimum of both return min(right1, right0); } // Driver code int main() { int a[] = { 1, 1, 1, 0, 0, 1, 0, 1, 1 }; int n = sizeof (a) / sizeof (a[0]); cout << smallestIndex(a, n); return 0; } |
Java
// Java program to implement // the above approach class GFG { // Function to find the smallest index // such that there are no 0 or 1 to its right static int smallestIndex( int []a, int n) { // Initially int right1 = 0 , right0 = 0 ; // Traverse in the array for ( int i = 0 ; i < n; i++) { // Check if array element is 1 if (a[i] == 1 ) right1 = i; // a[i] = 0 else right0 = i; } // Return minimum of both return Math.min(right1, right0); } // Driver code public static void main(String[] args) { int []a = { 1 , 1 , 1 , 0 , 0 , 1 , 0 , 1 , 1 }; int n = a.length; System.out.println(smallestIndex(a, n)); } } // This code is contributed // by Code_Mech. |
Python3
# Python 3 program to implement # the above approach # Function to find the smallest # index such that there are no # 0 or 1 to its right def smallestIndex(a, n): # Initially right1 = 0 right0 = 0 # Traverse in the array for i in range (n): # Check if array element is 1 if (a[i] = = 1 ): right1 = i # a[i] = 0 else : right0 = i # Return minimum of both return min (right1, right0) # Driver code if __name__ = = '__main__' : a = [ 1 , 1 , 1 , 0 , 0 , 1 , 0 , 1 , 1 ] n = len (a) print (smallestIndex(a, n)) # This code is contributed by # Surendra_Gangwar |
C#
// C# program to implement // the above approach using System; class GFG { // Function to find the smallest index // such that there are no 0 or 1 to its right static int smallestIndex( int []a, int n) { // Initially int right1 = 0, right0 = 0; // Traverse in the array for ( int i = 0; i < n; i++) { // Check if array element is 1 if (a[i] == 1) right1 = i; // a[i] = 0 else right0 = i; } // Return minimum of both return Math.Min(right1, right0); } // Driver code public static void Main() { int []a = { 1, 1, 1, 0, 0, 1, 0, 1, 1 }; int n = a.Length; Console.Write(smallestIndex(a, n)); } } // This code is contributed // by Akanksha Rai |
PHP
<?php // PHP program to implement // the above approach // Function to find the smallest index // such that there are no 0 or 1 to its right function smallestIndex( $a , $n ) { // Initially $right1 = 0; $right0 = 0; // Traverse in the array for ( $i = 0; $i < $n ; $i ++) { // Check if array element is 1 if ( $a [ $i ] == 1) $right1 = $i ; // a[i] = 0 else $right0 = $i ; } // Return minimum of both return min( $right1 , $right0 ); } // Driver code $a = array (1, 1, 1, 0, 0, 1, 0, 1, 1); $n = sizeof( $a ); echo smallestIndex( $a , $n ); // This code is contributed by Akanksha Rai ?> |
Javascript
<script> // Javascript program to implement // the above approach // Function to find the smallest index // such that there are no 0 or 1 to its right function smallestIndex(a, n) { // Initially let right1 = 0, right0 = 0; // Traverse in the array let i; for (i = 0; i < n; i++) { // Check if array element is 1 if (a[i] == 1) right1 = i; // a[i] = 0 else right0 = i; } // Return minimum of both return Math.min(right1, right0); } // Driver Code var a = [ 1, 1, 1, 0, 0, 1, 0, 1, 1 ]; let n = a.length; document.write(smallestIndex(a, n)); // This code is contributed by ajaykrsharma132. </script> |
6
Time Complexity: O(N)
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!