归并排序思想 leetcode 23. Merge k Sorted Lists

来源:互联网 发布:广电网络股票分析 编辑:程序博客网 时间:2024/04/29 04:55

题目链接   Leetcode 23


之前写归并排序都是在数组层面上进行操作,这一题是在单链表层面实现归并排序,要理解归并排序的基础原理就不难。


注意:特殊情况 空链表 空数组 等


public class Solution {    public ListNode mergeKLists(ListNode[] lists) {    int len = lists.length;    if(len==0) return null;    ListNode s = merge(lists,0,len-1);    return s;    }        public static ListNode merge2node(ListNode a, ListNode b){    ListNode s = new ListNode(0);    ListNode p = s;    while(a!=null && b!=null){    if(a.val<b.val){    s.next = a;    s=s.next;    a = a.next;    }else{    s.next = b;    s=s.next;    b=b.next;    }    }    if(a!=null){    s.next = a;    s=s.next;    a=a.next;    }    if(b!=null){    s.next = b;    s=s.next;    b=b.next;    }    return p.next;    }        public static ListNode merge(ListNode[] lists,int i,int j){    ListNode s;if(i<j){    int mid = (i+j)/2;    ListNode a = merge(lists,i,mid);    ListNode b = merge(lists,mid+1,j);    s = merge2node(a,b);}else{s = lists[i];}return s;    }}


0 0
原创粉丝点击