此种方法不用新建链表,基本思想在原来链表节点之上,改变其连接方式,注意cur指针的赋值
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode mergeKLists(ListNode[] lists) {
if(lists==null||lists.length==0){
return null;
}
ListNode head=new ListNode(0),cur=head;
cur.next=lists[0];
ListNode l1=lists[0];
ListNode l2=null;
for(int i=1;i<lists.length;i++){
l1=head.next;
l2=lists[i];
cur=head;
while(l1!=null&&l2!=null){
if(l1.val<l2.val){
cur.next=l1;
l1=l1.next;
}else{
cur.next=l2;
l2=l2.next;
}
cur=cur.next;
}
cur.next=( l1!=null ? l1:l2);
}
return head.next;
}
}