1.题目
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
来源:力扣(LeetCode)
链接:合并两个有序链表
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2.分析
合并两个链表,关键在于同时遍历两个链表,因此需要3个指针节点1号,2号,3号
1号遍历第一个链表,2号遍历第二个链表,3号用于遍历合并的链表
此问题可以看做按有序来生成链表
首先判断1和2中节点数值的大小,
如:1较小的话,将1挂在3号上,1号往后走一位,3号也往后走一位;
最终将其中的短的走完了之后,将较长的的链表剩下的节点挂在3号节点之后;
返回新链表的首节点
3.代码示例
class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode newHead = new ListNode();
ListNode tmp = newHead;
while(l2!=null && l1!=null){
if(l2.val<=l1.val){
tmp.next = l2;
l2 = l2.next;
}else{
tmp.next=l1;
l1= l1.next;
}
tmp = tmp.next;
}
if(l1==null){
tmp.next = l2;
}else{
tmp.next = l1;
}
return newHead.next;
}
}