📜  计算经过的汽车对

📅  最后修改于: 2022-05-13 01:57:52.567000             🧑  作者: Mango

计算经过的汽车对

给定一个由大小 N 组成的非空二进制数组 A,其中,

0 represents a car traveling east,
1 represents a car traveling west. 

目标是计算过往车辆。我们说当 P 向东行驶且 Q 向西行驶时,一对汽车 (P, Q) 正在经过,其中 0 <= P < Q < N。
例子:

Input  : arr[] = {0, 1, 0, 1, 1}
Output : 5
The 5 pairs are (A[0], A[1]), (A[0], A[3]), (A[0], A[4]),   
(A[2], A[3]) and (A[2], A[4]). Note that in all pairs
first element is 0, second element is 1 and index of
first element is smaller than index of second element.

Input  : arr[] = {1, 0, 0, 0, 1}
Output : 3

Input : arr[] = {0, 0, 1, 0, 0}
Output : 2

一个简单的解决方案是使用两个嵌套循环。外层循环搜索一个 0,内层循环计算 0 之后的 1 的个数。最后,我们返回总计数。

C++
// Simple C++ program to count passing cars
#include
using namespace std;
 
// Returns count of passing cars
int getPassingCars(int A[], int n)
{
    int result = 0;
    for (int i=0; i


Java
// Simple Java program to count passing cars
class GFG
{
 
// Returns count of passing cars
static int getPassingCars(int[] A, int n)
{
    int result = 0;
    for (int i = 0; i < n - 1; i++)
    {
    if (A[i] == 0)
    {
        for (int j = i + 1; j < n; j++)
            if (A[j] == 1)
                result++;
    }
    }
    return result;
}
 
// Driver Code
public static void main(String[] args)
{
    int[] A = {0, 1, 0, 1, 1};
    int n = A.length;
    System.out.println(getPassingCars(A, n));
}
}
 
// This code is contributed
// by Code_Mech


Python3
# Simple Python 3 program to
# count passing cars
 
# Returns count of passing cars
def getPassingCars(A, n):
    result = 0
    for i in range(0, n - 1, 1):
        if (A[i] == 0):
            for j in range(i + 1, n, 1):
                if (A[j]):
                    result += 1
         
    return result
 
# Driver Code
if __name__ == '__main__':
    A = [0, 1, 0, 1, 1]
    n = len(A)
    print(getPassingCars(A, n))
     
# This code is contributed by
# Sanjit_Prasad


C#
// Simple C# program to count passing cars
using System;
 
class GFG
{
 
// Returns count of passing cars
static int getPassingCars(int[] A, int n)
{
    int result = 0;
    for (int i = 0; i < n - 1; i++)
    {
    if (A[i] == 0)
    {
        for (int j = i + 1; j < n; j++)
            if (A[j] == 1)
                result++;
    }
    }
    return result;
}
 
// Driver Code
public static void Main()
{
    int[] A = {0, 1, 0, 1, 1};
    int n = A.Length;
    Console.WriteLine(getPassingCars(A, n));
}
}
 
// This code is contributed
// by Akanksha Rai


PHP


Javascript


C++
// Efficient C++ program to count passing cars
#include
using namespace std;
 
// Returns count of passing cars
int getPassingCars(int A[], int n)
{
    // Initialize count of 1s from right
    // and result
    int countOne = 0, result = 0;
    while (n >= 1)
    {
        if (A[n-1] == 1)
            countOne++;
        else
            result += countOne;
        n--;
    }
 
    return result;
}
 
// Driver program
int main()
{
    int A[] = {0, 1, 0, 1, 1};
    int n = sizeof(A)/sizeof(A[0]);
    cout << getPassingCars(A, n);
    return 0;
}


Java
// Efficient Java program to count passing cars
class GFG
{
     
// Returns count of passing cars
static int getPassingCars(int A[], int n)
{
    // Initialize count of 1s from right
    // and result
    int countOne = 0, result = 0;
    while (n >= 1)
    {
        if (A[n-1] == 1)
            countOne++;
        else
            result += countOne;
        n--;
    }
 
    return result;
}
 
// Driver code
public static void main(String[] args)
{
    int A[] = {0, 1, 0, 1, 1};
    int n = A.length;
    System.out.println(getPassingCars(A, n));
}
}
 
// This code is contributed by Mukul Singh.


Python3
# Efficient Python3 program to
# count passing cars
 
# Returns count of passing cars
def getPassingCars(A, n):
 
    # Initialize count of 1s
    # from right and result
    countOne = 0; result = 0
    while n >= 1:
        if A[n - 1] == 1:
            countOne += 1
        else:
            result += countOne
        n -= 1
    return result
 
# Driver code
A = [0, 1, 0, 1, 1]
n = len(A)
print(getPassingCars(A, n))
 
# This code is contributed
# by Shrikant13


C#
// Efficient C# program to
// count passing cars
using System;
 
class GFG
{
     
// Returns count of passing cars
static int getPassingCars(int []A, int n)
{
    // Initialize count of 1s from right
    // and result
    int countOne = 0, result = 0;
    while (n >= 1)
    {
        if (A[n - 1] == 1)
            countOne++;
        else
            result += countOne;
        n--;
    }
 
    return result;
}
 
// Driver code
public static void Main()
{
    int []A = {0, 1, 0, 1, 1};
    int n = A.Length;
    Console.Write(getPassingCars(A, n));
}
}
 
// This code is contributed
// by Akanksha Rai


PHP
= 1)
    {
        if ($A[$n-1] == 1)
            $countOne++;
        else
            $result += $countOne;
        $n--;
    }
 
    return $result;
}
 
// Driver Code
$A = array(0, 1, 0, 1, 1);
$n = sizeof($A);
echo getPassingCars($A, $n);
 
// This code is contributed
// by Akanksha Rai
?>


Javascript


输出:

5

时间复杂度: O(n 2 )
辅助空间: O(1)从右侧遍历数组的有效解决方案,从右侧跟踪 1 的计数。每当我们看到 0 时,我们将结果增加 1 的计数。

C++

// Efficient C++ program to count passing cars
#include
using namespace std;
 
// Returns count of passing cars
int getPassingCars(int A[], int n)
{
    // Initialize count of 1s from right
    // and result
    int countOne = 0, result = 0;
    while (n >= 1)
    {
        if (A[n-1] == 1)
            countOne++;
        else
            result += countOne;
        n--;
    }
 
    return result;
}
 
// Driver program
int main()
{
    int A[] = {0, 1, 0, 1, 1};
    int n = sizeof(A)/sizeof(A[0]);
    cout << getPassingCars(A, n);
    return 0;
}

Java

// Efficient Java program to count passing cars
class GFG
{
     
// Returns count of passing cars
static int getPassingCars(int A[], int n)
{
    // Initialize count of 1s from right
    // and result
    int countOne = 0, result = 0;
    while (n >= 1)
    {
        if (A[n-1] == 1)
            countOne++;
        else
            result += countOne;
        n--;
    }
 
    return result;
}
 
// Driver code
public static void main(String[] args)
{
    int A[] = {0, 1, 0, 1, 1};
    int n = A.length;
    System.out.println(getPassingCars(A, n));
}
}
 
// This code is contributed by Mukul Singh.

Python3

# Efficient Python3 program to
# count passing cars
 
# Returns count of passing cars
def getPassingCars(A, n):
 
    # Initialize count of 1s
    # from right and result
    countOne = 0; result = 0
    while n >= 1:
        if A[n - 1] == 1:
            countOne += 1
        else:
            result += countOne
        n -= 1
    return result
 
# Driver code
A = [0, 1, 0, 1, 1]
n = len(A)
print(getPassingCars(A, n))
 
# This code is contributed
# by Shrikant13

C#

// Efficient C# program to
// count passing cars
using System;
 
class GFG
{
     
// Returns count of passing cars
static int getPassingCars(int []A, int n)
{
    // Initialize count of 1s from right
    // and result
    int countOne = 0, result = 0;
    while (n >= 1)
    {
        if (A[n - 1] == 1)
            countOne++;
        else
            result += countOne;
        n--;
    }
 
    return result;
}
 
// Driver code
public static void Main()
{
    int []A = {0, 1, 0, 1, 1};
    int n = A.Length;
    Console.Write(getPassingCars(A, n));
}
}
 
// This code is contributed
// by Akanksha Rai

PHP

= 1)
    {
        if ($A[$n-1] == 1)
            $countOne++;
        else
            $result += $countOne;
        $n--;
    }
 
    return $result;
}
 
// Driver Code
$A = array(0, 1, 0, 1, 1);
$n = sizeof($A);
echo getPassingCars($A, $n);
 
// This code is contributed
// by Akanksha Rai
?>

Javascript


输出:

5