leetcode 23 合并 k 个有序链表

Posted dogelife

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode 23 合并 k 个有序链表相关的知识,希望对你有一定的参考价值。

问题描述

* leetcode 23,  Merge k Sorted Lists

解题思路

  1. 合并2个有序链表的进阶版,很容易想到,利用分治进行处理。
    把个数大于2的集合 两两划分处理,最后再做最后一步的处理。
     1 public class Solution 
     2     public ListNode mergeKLists(ListNode[] lists) 
     3         if (lists.length==0 || lists==null)  return null; 
     4         return merge(lists, 0, lists.length-1);
     5     
     6     public static ListNode merge(ListNode[] lists, int left, int right) 
     7         if (left == right)  return lists[left]; 
     8         int mid = left + (right-left)/2;
     9         ListNode l1 = merge(lists, left, mid);
    10         ListNode l2 = merge(lists, mid+1, right);
    11         return merger2Lists(l1, l2);
    12     
    13     public static ListNode merger2Lists(ListNode l1, ListNode l2) 
    14         // 递归写法
    15         if (l1==null)  return l2; 
    16         if (l2==null)  return l1; 
    17         ListNode head = null;
    18         if (l1.val < l2.val) 
    19             head = l1;
    20             head.next = merger2Lists(l1.next, l2);
    21          else 
    22             head = l2;
    23             head.next = merger2Lists(l1, l2.next);
    24         
    25         return head;
    26     
    27 
    28     

     

以上是关于leetcode 23 合并 k 个有序链表的主要内容,如果未能解决你的问题,请参考以下文章

leetcode 23 合并 k 个有序链表

LeetCode 23合并K个排序链表

链表5:6种方法实现合并K个有序链表

leetcode python 012 hard 合并k个有序链表

LeetCode JavaScript实现 合并链表 题型汇总

[leetcode] 23. 合并K个排序链表