题:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4
代码:
class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
public static ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if (l1 == null && l2 == null) {
return null;
} else if (l1 == null && l2 != null) {
return l2;
} else if (l1 != null && l2 == null) {
return l1;
}
// 都不为空
ListNode tmpL1 = l1;
ListNode tmpL2 = l2;
ListNode result = new ListNode(0);
ListNode p = result;
while (tmpL1 != null && tmpL2 != null) {
if (tmpL1.val <= tmpL2.val) {
p.next = tmpL1;
p = p.next;
tmpL1 = tmpL1.next;
} else {
p.next = tmpL2;
p = p.next;
tmpL2 = tmpL2.next;
}
}
if (tmpL1 == null) {
p.next = tmpL2;
} else if (tmpL2 == null) {
p.next = tmpL1;
}
return result = result.next;
}