Codility每周一课大数据,机器学习,人工智能程序员

Codility每周一课:L5 Prefix Sums(P5.1

2019-01-26  本文已影响2人  AiFany
0.png

P5.1 PassingCars
Count the number of passing cars on the road.

一个由N个整数组成的非空数组A。数组A的元素表示道路上行驶的汽车。数组A仅包含0和1:

  1. 0表示向东行驶的汽车;
  2. 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。

假定:

  1. N是区间[1..100000]内的整数;
  2. 数组A的每个元素是0,1中的一个;

和数组后边0元素代表的汽车能组成过路车对的汽车,同样也能和前边的0元素代表的汽车组成过路车队。

# -*- 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
image

点击获得更多编程练习题。欢迎Follow,感谢Star!!! 扫描关注微信公众号pythonfan,获取更多。

image image
上一篇 下一篇

猜你喜欢

热点阅读