23. 合并 K 个升序链表

Problem: 23. 合并 K 个升序链表

解题方法

  • 添加全部进一个List

  • 对List排序

  • 排序后新建链表

  • 按照顺序加入

复杂度

时间复杂度:

添加时间复杂度, 示例: $O(n)$

空间复杂度:

添加空间复杂度, 示例: $O(n)$

Code

[]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69

/**

 * Definition for singly-linked list.

 * public class ListNode {

 *     public int val;

 *     public ListNode next;

 *     public ListNode(int x) { val = x; }

 * }

 */

public class Solution {

    public ListNode MergeKLists(ListNode[] lists) {

        List<int> help = new List<int>();

        for(int j=0;j<lists.Length;j++)

        {

            ListNode ans=lists[j];

            while(ans!=null)

            {

                help.Add(ans.val);

                ans=ans.next;

            }

        }

        help.Sort();

        ListNode res = new ListNode(0);

        int i=0;

        ListNode helpnode = res;

        while(i<help.Count())

        {

            ListNode node = new ListNode(help[i]);

            i++;

            helpnode.next = node;

            helpnode = helpnode.next;

        }

        return res.next;

    }

}