MaximumAverageSubarrayI::findMaxAverage()   A
last analyzed

Complexity

Conditions 4
Paths 5

Size

Total Lines 16
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 10
c 2
b 0
f 0
dl 0
loc 16
rs 9.9332
cc 4
nc 5
nop 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace leetcode;
6
7
class MaximumAverageSubarrayI
8
{
9
    public static function findMaxAverage(array $nums, int $k): float
10
    {
11
        if (empty($nums)) {
12
            return 0;
13
        }
14
        $sum = 0;
15
        for ($i = 0; $i < $k; $i++) {
16
            $sum += $nums[$i];
17
        }
18
        $max = $sum;
19
        for ($i = $k, $n = count($nums); $i < $n; $i++) {
20
            $sum += $nums[$i] - $nums[$i - $k];
21
            $max = max($max, $sum);
22
        }
23
24
        return $max / $k;
25
    }
26
27
    public static function findMaxAverage2(array $nums, int $k): float
28
    {
29
        if (empty($nums)) {
30
            return 0;
31
        }
32
        [$ans, $sum] = [PHP_INT_MIN, 0];
33
        for ($i = 0, $n = count($nums); $i < $n; $i++) {
34
            if ($i < $k) {
35
                $sum += $nums[$i];
36
            } else {
37
                $ans = max($ans, $sum);
38
                $sum += $nums[$i] - $nums[$i - $k];
39
            }
40
        }
41
42
        return max($ans, $sum) / $k;
43
    }
44
}
45