1. 题目
2. 分析
本题比较简单,可以使用双指针,过程如图所示:
-
初始化,定义a、b指针和返回的res
-
ab相等,将res指向a当前节点,a后移
-
b小,将res指向b当前节点,b后移
-
a小,将res指向a当前节点,a后移
-
ab相等,将res指向a当前节点,a后移
-
a为空,将res指向b当前节点,返回res.next
3. 代码
class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode head = new ListNode(0);
ListNode res = head;
while (null != l1 || null != l2) {
if (null == l1) {
head.next = l2;
return res.next;
}
if (null == l2) {
head.next = l1;
return res.next;
}
if (l1.val > l2.val) {
head.next = l2;
l2 = l2.next;
head = head.next;
} else {
head.next = l1;
l1 = l1.next;
head= head.next;
}
}
return res.next;
}
}