给定N个数字的二进制数组。任务是找到最小的索引,以使索引的右边没有1或0。
注意:该数组将至少具有一个0和1。
例子:
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
方法:存储最右边出现的索引1和0,并返回两者的最小值。
下面是上述方法的实现:
C++
// C++ program to implement
// the above approach
#include
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
Javascript
输出:
6
时间复杂度:O(N)