Test Failed
Push — master ( 34be47...f81982 )
by Jinyun
02:23
created

MinimumSizeSubarraySum   A

Complexity

Total Complexity 13

Size/Duplication

Total Lines 35
Duplicated Lines 0 %

Importance

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

2 Methods

Rating   Name   Duplication   Size   Complexity  
A minSubArrayLen() 0 16 6
B minSubArrayLen2() 0 15 7
1
<?php
2
3
declare(strict_types=1);
4
5
namespace leetcode;
6
7
class MinimumSizeSubarraySum
8
{
9
    public static function minSubArrayLen(int $target, array $nums): int
10
    {
11
        if (empty($nums) || $target < 0) {
12
            return 0;
13
        }
14
        $i = $j = $sum = 0;
15
        [$n, $min] = [count($nums), PHP_INT_MAX];
16
        while ($i < $n) {
17
            $sum += $nums[$i++];
18
            while ($sum >= $target) {
19
                $min = min($min, $i - $j);
20
                $sum -= $nums[$j++];
21
            }
22
        }
23
24
        return $min === PHP_INT_MAX ? 0 : $min;
25
    }
26
27
    public static function minSubArrayLen2(int $target, array $nums): int
28
    {
29
        if (empty($nums) || $target < 0) {
30
            return 0;
31
        }
32
        [$n, $j, $sum, $min] = [count($nums), 0, 0, PHP_INT_MAX];
33
        for ($i = 0; $i < $n; $i++) {
34
            $sum += $nums[$i];
35
            for (; $j < $n && $sum >= $target; $j++) {
36
                $min = min($min, $i - $j + 1);
37
                $sum -= $nums[$j];
38
            }
39
        }
40
41
        return $min === PHP_INT_MAX ? 0 : $min;
42
    }
43
}
44