Test Failed
Push — master ( 1d696c...5ff2ef )
by Jinyun
02:35
created

MergeTwoSortedLists   A

Complexity

Total Complexity 13

Size/Duplication

Total Lines 36
Duplicated Lines 0 %

Importance

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

2 Methods

Rating   Name   Duplication   Size   Complexity  
A mergeTwoLists() 0 12 5
B mergeTwoLists2() 0 19 8
1
<?php
2
3
declare(strict_types=1);
4
5
namespace leetcode;
6
7
use JetBrains\PhpStorm\Pure;
8
use leetcode\util\ListNode;
9
10
class MergeTwoSortedLists
11
{
12
    public static function mergeTwoLists(?ListNode $p, ?ListNode $q): ?ListNode
13
    {
14
        if (!$p || !$q) {
15
            return $p ?: $q;
16
        }
17
18
        if ($p->val < $q->val) {
19
            $p->next = self::mergeTwoLists($p->next, $q);
20
            return $p;
21
        } else {
22
            $q->next = self::mergeTwoLists($p, $q->next);
23
            return $q;
24
        }
25
    }
26
27
    public static function mergeTwoLists2(?ListNode $p, ?ListNode $q): ?ListNode
28
    {
29
        if (!$p || !$q) {
30
            return $p ?: $q;
31
        }
32
        $head = $curr = new ListNode();
33
        while ($p && $q) {
34
            if ($p->val < $q->val) {
35
                $curr->next = $p;
36
                $p = $p->next;
37
            } else {
38
                $curr->next = $q;
39
                $q = $q->next;
40
            }
41
            $curr = $curr->next;
42
        }
43
        $curr->next = $p ?: $q;
44
45
        return $head->next;
46
    }
47
}
48