计算经过的汽车对
给定一个由大小 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