1 题目描述
2 算法思路
思路:搞一个伪头节点,然后将链表1和链表2进行对比,依次加到伪头节点后面
为什么叫伪头节点呢:因为初始状态下,合并链表中并无节点,因此真正的头节点是伪头节点的后一个节点。
算法:
- 初始化一个伪头节点temp ,cur =tmep
- 合并,循环,当l1 或者 l2 为空时,退出循环
- 当 l1.val < l2.val 时,cur.next = l1, l1 = l1.next;
- 当 l1.val >= l2.val 时,cur.next = l2, l2 = l2.next;
- cur = cur.next;
- 此时,l1 或者 l2其中一个为空,将剩下一个链表的数添加到合并链表中
- 返回伪头节点,temp.next
3 代码
class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode temp = new ListNode(0);
ListNode cur = temp;
while(l1 != null && l2 !=null){
if(l1.val < l2.val){
cur.next = l1;
l1 = l1.next;
}else if(l1.val >= l2.val){
cur.next = l2;
l2 = l2.next;
}
cur = cur.next;
}
cur.next = l1 != null ? l1 : l2;
return temp.next;
}
}
4 提交结果