P5.1 PassingCars
Count the number of passing cars on the road.
-
P5.1 过路车
计算路上的过路车数量
一个由N个整数组成的非空数组A。数组A的元素表示道路上行驶的汽车。数组A仅包含0和1:
- 0表示向东行驶的汽车;
- 1表示向西行驶的汽车;
目标是计算过路车的数量。当P向东行驶,Q向西行驶时,有一对车(P,Q),其中0≤P<Q<N表示一对过路车。
例如,考虑数组A,A[0]=0,A[1]=1,A[2]=0,A[3]=1,A[4]=1。我们有五对过路车:(0,1),(0,3),(0,4),(2,3),(2,4)。
编写函数:
def solution(A)
给定一个由N个整数组成的非空数组A,则返回路过车对的数目。如果过路车对数超过1000,000,000,该函数应返回−1。
例如,针对上面的例子函数应该返回5。
假定:
- N是区间[1..100000]内的整数;
- 数组A的每个元素是0,1中的一个;
- 解题思路
和数组后边0元素代表的汽车能组成过路车对的汽车,同样也能和前边的0元素代表的汽车组成过路车队。
- Python3代码
# -*- coding:utf-8 -*-
# &Author AnFany
# Lesson 5:Prefix Sums
# P 5.1 PassingCars
def solution(A):
"""
根据数组A中车的行驶方向,确定出现多少对过路车
:param A: 数组
:return: 过路车的对数
"""
reverse_list = A[::-1]
pairs = 0
forward_passing = 0
zero_sign = 0
for index, value in enumerate(reverse_list):
if value == 0:
forward_passing += index - zero_sign
pairs += forward_passing
zero_sign = index + 1
if pairs > 1000000000:
return -1
return pairs
- 结果
点击获得更多编程练习题。欢迎Follow,感谢Star!!! 扫描关注微信公众号pythonfan,获取更多。
image image
网友评论