您的位置:首页 > 其它

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

2016-06-21 14:24 459 查看
题意:给出一个有序单链表数组,将其合并成一个有序单链表

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

代码如下:

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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: