PassingCars

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 // no.0 car trave to east A[1] = 1 // no.1 car trave to west A[2] = 0 // no.2 car trave to east A[3] = 1 // no.3 car trave to west A[4] = 1 // no.4 car trave to west We have five pairs of passing cars: (0, 1), (0, 3), (0, 4), (2, 3), (2, 4).

Write a function:

func Solution(A []int) int

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.

Copyright 2009–2021 by Codility Limited. All Rights Reserved. Unauthorized copying, publication or disclosure prohibited.

題目大意

每台車的車號為A[]的index, 0 代表往東, 1代表往西, 向東的車號需要小於向西的車號. 找出會車的幾種可能性

解題思路

每一個向東走的車, 都會跟向西的配對. 當遇到向西時組合+1. 所以車號0可以跟所有大於0的向西車配對. 車號2跟所有大於0的向西車配對 1號車前面只有車號0這選擇. 車號3跟4有車號0跟2這兩個選擇. 所以是1+2*2=5

來源

https://app.codility.com/programmers/lessons/5-prefix_sums/passing_cars/

解答

https://github.com/kimi0230/LeetcodeGolang/blob/master/Codility/Lesson/0005.Prefix-Sums/PassingCars/PassingCars.go

package PassingCars

func Solution(A []int) int {
    addBase, result := 0, 0
    for i := 0; i < len(A); i++ {
        if A[i] == 0 {
            addBase++
        } else {
            result += addBase
        }
    }
    if result > 1000000000 {
        return -1
    }
    return result
}
© Kimi Tsai all right reserved.            Updated : 2024-05-06 09:36:37

results matching ""

    No results matching ""