题目:合并两个有序链表
算法:就地合并(不使用额外内存空间)
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
// emtpy list
if (null==l1 && null==l2) {
return null;
} else if (null == l1) {
return l2;
} else if (null == l2) {
return l1;
}
ListNode pa = l1;
ListNode pb = l2;
ListNode pc = null;
ListNode head = null;
if (pa.val <= pb.val) {
pc = pa;
pa = pa.next;
} else {
pc = pb;
pb = pb.next;
}
head = pc;
while (null!=pa && null!=pb) {
if (pa.val <= pb.val) {
pc.next = pa;
pa = pa.next;
} else {
pc.next = pb;
pb = pb.next;
}
pc = pc.next;
}
if (null == pa) {
pc.next = pb;
} else if (null == pb) {
pc.next = pa;
}
return head;
}
}