将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4
package leetCode_5_8;
/**
* @author : caoguotao
* @date 创建时间:2019年5月12日 下午5:30:02
* @version 1.0
* @parameter
* @since
* @return
*/
public class Solution21 {
static class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
}
}
public static void main(String[] args) {
ListNode head11 = new ListNode(1);
ListNode node12 = new ListNode(2);
head11.next = node12;
ListNode node13 = new ListNode(4);
node12.next = node13;
node13.next = null;
ListNode head21 = new ListNode(1);
ListNode node22 = new ListNode(3);
head21.next = node22;
ListNode node23 = new ListNode(4);
node22.next = node23;
node23.next = null;
ListNode l = mergeTwoLists(head11, head21);
while(l != null) {
System.out.println(l.val);
l = l.next;
}
}
public static ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode head = null;
if(l1 == null && l2 == null) {
return null;
}
if(l1 == null) {
return l2;
}
if(l2 == null) {
return l1;
}
if(l1.val <= l2.val) {
head = l1;
l1 = l1.next;
}
else {
head = l2;
l2 = l2.next;
}
ListNode temp = head;
while(l1 != null && l2 != null) {
if(l1.val <= l2.val) {
temp.next = l1;
temp = l1;
l1 = l1.next;
}
else {
temp.next = l2;
temp = l2;
l2 = l2.next;
}
}
if(l1 != null) {
temp.next = l1;
}
if(l2 != null) {
temp.next = l2;
}
return head;
}
}