描述:
将两个排序链表合并为一个新的排序链表
样例:
给出 1->3->8->11->15->null
,2->null
, 返回 1->2->3->8->11->15->null
。
Java代码:
/**
* Definition for ListNode.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int val) {
* this.val = val;
* this.next = null;
* }
* }
*/
public class Solution {
/**
* @param ListNode l1 is the head of the linked list
* @param ListNode l2 is the head of the linked list
* @return: ListNode head of linked list
*/
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode head = null;
ListNode rear = null;
boolean isHead = true;
ListNode l1List = l1;
ListNode l2List = l2;
if(l1List == null){
System.out.println("return l2");
return l2List;
}
if(l2List == null){
System.out.println("return l1");
return l1List;
}
while(l1List != null && l2List != null){
System.out.println("@");
if(l1List.val <= l2List.val){
if(isHead){
head = l1List;
rear = l1List;
l1List = l1List.next;
isHead = false;
System.out.println("head l1:"+head.val);
continue;
}
rear.next = l1List;
rear = rear.next;
l1List = l1List.next;
System.out.println("add l1:"+rear.val);
}else{
if(isHead){
head = l2List;
rear = l2List;
l2List = l2List.next;
isHead = false;
System.out.println("head l2:"+head.val);
continue;
}
rear.next = l2List;
rear = rear.next;
l2List = l2List.next;
System.out.println("add l2:"+rear.val);
}
}
if(l1List != null){
System.out.println("l1 != null");
rear.next = l1List;
}
if(l2List != null){
System.out.println("l2 != null");
rear.next = l2List;
}
return head;
}
}