FairCandySwap   A
last analyzed

Complexity

Total Complexity 13

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 13
eloc 20
c 2
b 0
f 0
dl 0
loc 38
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
B fairCandySwap2() 0 18 7
A fairCandySwap() 0 16 6
1
<?php
2
3
declare(strict_types=1);
4
5
namespace leetcode;
6
7
class FairCandySwap
8
{
9
    public static function fairCandySwap(array $a, array $b): array
10
    {
11
        if (empty($a) || empty($b)) {
12
            return [];
13
        }
14
        [$aSum, $bSum] = [array_sum($a), array_sum($b)];
15
        $dif = (int) (($aSum - $bSum) / 2);
16
        for ($i = 0, $m = count($a); $i < $m; $i++) {
17
            for ($j = 0, $n = count($b); $j < $n; $j++) {
18
                if ($a[$i] - $b[$j] === $dif) {
19
                    return [$a[$i], $b[$j]];
20
                }
21
            }
22
        }
23
24
        return [];
25
    }
26
27
    public static function fairCandySwap2(array $a, array $b): array
28
    {
29
        if (empty($a) || empty($b)) {
30
            return [];
31
        }
32
        [$map, $dif] = [[], (int) ((array_sum($a) - array_sum($b)) / 2)];
33
        foreach ($a as $v) {
34
            if (!isset($map[$v])) {
35
                $map[$v] = $v;
36
            }
37
        }
38
        foreach ($b as $v) {
39
            if (isset($map[$dif + $v])) {
40
                return [$dif + $v, $v];
41
            }
42
        }
43
44
        return [];
45
    }
46
}
47