LeetCode Merge k Sorted Lists(有序单链表数组的合并)

来源:互联网 发布:php abstract class 编辑:程序博客网 时间:2024/05/17 17:41

题意:给出一个有序单链表数组,将其合并成一个有序单链表

思路:将其转化成两个单链表合并的问题,用递归方式来实现

代码如下:

public class Solution{    private ListNode mergeTwo(ListNode l1, ListNode l2)    {        if (null == l1) return l2;        if (null == l2) return l1;        if (l1 == l2) return l1;        if (l1.val < l2.val)        {            l1.next = mergeTwo(l1.next, l2);            return l1;        }        else        {            l2.next = mergeTwo(l1, l2.next);            return l2;        }    }    private ListNode reMerge(ListNode[] lists, int left, int right)    {        if (right - left < 2)        {            return mergeTwo(lists[left], lists[right]);        }        else        {            int mid = (left + right) >> 1;            return mergeTwo(reMerge(lists, left, mid), reMerge(lists, mid + 1, right));        }    }    public ListNode mergeKLists(ListNode[] lists)    {        if (null == lists || 0 == lists.length) return null;        return reMerge(lists, 0, lists.length - 1);    }}


0 0
原创粉丝点击