分析
首先题目中的关键词是升序,我们可以new一个新节点(newHead)来当返回链表的头,然后遍历链表A和B,比较其val,将小的节点连接到newHead后面即可。
- newHead(新返回链表的头)
- tmp(tmp=newHead)用于连接headA和headB传来的节点
注意
如果两个链表不等长的话,一个遍历完为空后,便可将另一个剩下的部分直接连接到tmp后面(因为两个链表都是升序的)
结合图来理解一下:
开始
尾部
代码如下:
class Solution {
public ListNode mergeTwoLists(ListNode headA, ListNode headB) {
ListNode newHead=new ListNode(-1);
ListNode tmp=newHead;
while(headA!=null&&headB!=null)
{
if(headA.val<=headB.val)
{
tmp.next=headA;
headA=headA.next;
}else{
tmp.next=headB;
headB=headB.next;
}
tmp=tmp.next;
}
if(headA==null)
{
tmp.next=headB;
}else{
tmp.next=headA;
}
return newHead.next;
}
}