SortArrayByParityII   A
last analyzed

Complexity

Total Complexity 16

Size/Duplication

Total Lines 46
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 16
eloc 29
c 2
b 0
f 0
dl 0
loc 46
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A sortArrayByParityII2() 0 20 6
B sortArrayByParityII() 0 22 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace leetcode;
6
7
class SortArrayByParityII
8
{
9
    public static function sortArrayByParityII(array $nums): array
10
    {
11
        if (empty($nums)) {
12
            return [];
13
        }
14
        $n = count($nums);
15
        [$i, $j] = [0, 1];
16
        while ($i < $n && $j < $n) {
17
            while ($i < $n && $nums[$i] % 2 === 0) {
18
                $i += 2;
19
            }
20
            while ($j < $n && $nums[$j] % 2 === 1) {
21
                $j += 2;
22
            }
23
            if ($i < $n && $j < $n) {
24
                $tmp = $nums[$i];
25
                $nums[$i] = $nums[$j];
26
                $nums[$j] = $tmp;
27
            }
28
        }
29
30
        return $nums;
31
    }
32
33
    public static function sortArrayByParityII2(array $nums): array
34
    {
35
        if (empty($nums)) {
36
            return [];
37
        }
38
        $n = count($nums);
39
        [$i, $j] = [0, 1];
40
        while ($i < $n && $j < $n) {
41
            if ($nums[$i] % 2 === 0) {
42
                $i += 2;
43
            } elseif ($nums[$j] % 2 === 1) {
44
                $j += 2;
45
            } else {
46
                [$nums[$i], $nums[$j]] = [$nums[$j], $nums[$i]];
47
                $i += 2;
48
                $j += 2;
49
            }
50
        }
51
52
        return $nums;
53
    }
54
}
55