Test Failed
Push — master ( a78c4e...c19dce )
by Jinyun
02:30
created

distanceBetweenBusStops2()   A

Complexity

Conditions 4
Paths 2

Size

Total Lines 9
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 5
c 1
b 0
f 0
dl 0
loc 9
rs 10
cc 4
nc 2
nop 3
1
<?php
2
3
declare(strict_types=1);
4
5
namespace leetcode;
6
7
class DistanceBetweenBusStops
8
{
9
    public static function distanceBetweenBusStops(array $distance, int $start, int $destination): int
10
    {
11
        if (empty($distance) || $start < 0 || $destination < 0) {
12
            return 0;
13
        }
14
        if ($start > $destination) {
15
            $tmp = $start;
16
            $start = $destination;
17
            $destination = $tmp;
18
        }
19
        $res = $sum = 0;
20
        foreach ($distance as $i => $value) {
21
            if ($i >= $start && $i < $destination) {
22
                $res += $value;
23
            }
24
            $sum += $value;
25
        }
26
27
        return min($res, $sum - $res);
28
    }
29
30
    public static function distanceBetweenBusStops2(array $distance, int $start, int $destination): int
31
    {
32
        if (empty($distance) || $start < 0 || $destination < 0) {
33
            return 0;
34
        }
35
        [$a, $b] = [min($start, $destination), max($start, $destination)];
36
        $slice = array_slice($distance, $a, $b - $a);
37
38
        return min(array_sum($slice), array_sum($distance) - array_sum($slice));
39
    }
40
}
41