-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPassingCars.php
114 lines (88 loc) · 2 KB
/
PassingCars.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<?php
function solution($A){
# 60
// $pair = 0;
// $zero = [];
// foreach($A as $k=>$v){
// if($v==0){
// $zero[] = $k;
// }
// if($v==1){
// for($i=0;$i<count($zero);$i++){
// # $pair[]=[$zero[$i], $k];
// $pair++;
// }
// }
// }
// return $pair ;
# 70
// $pair = 0;
// $zero = [];
// foreach($A as $k=>$v){
// if($v==0){
// $zero[] = $k;
// }
// if($v==1){
// $pair += count($zero);
// }
// }
// return $pair ;
# 70
// $pair = 0;
// $zero = 0;
// foreach($A as $k=>$v){
// if($v==0){
// $zero++;
// }
// if($v==1){
// $pair += $zero;
// }
// }
// return $pair ;
# 100
$pair = 0;
$zero = 0;
foreach($A as $k=>$v){
if($v==0){
$zero++;
}
if($v==1){
$pair += $zero;
}
}
if($pair > 1000000000){
return (int) -1;
}
return $pair ;
}
$A=[0,1,0,1,1];
echo '<pre>';
print_r( solution($A) );
/* Question
A non-empty array A consisting of N integers is given. The consecutive elements of array A represent consecutive cars on a road.
Array A contains only 0s and/or 1s:
0 represents a car traveling east,
1 represents a car traveling west.
The goal is to count passing cars. We say that a pair of cars (P, Q), where 0 ≤ P < Q < N, is passing when P is traveling to the east and Q is traveling to the west.
For example, consider array A such that:
A[0] = 0
A[1] = 1
A[2] = 0
A[3] = 1
A[4] = 1
We have five pairs of passing cars: (0, 1), (0, 3), (0, 4), (2, 3), (2, 4).
Write a function:
function solution($A);
that, given a non-empty array A of N integers, returns the number of pairs of passing cars.
The function should return −1 if the number of pairs of passing cars exceeds 1,000,000,000.
For example, given:
A[0] = 0
A[1] = 1
A[2] = 0
A[3] = 1
A[4] = 1
the function should return 5, as explained above.
Write an efficient algorithm for the following assumptions:
N is an integer within the range [1..100,000];
each element of array A is an integer that can have one of the following values: 0, 1.
*/