“Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。”
一、题目描述
- 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
二、思路分析
- 这道题考察我们对于链表的掌握程度
- 首先创建一个元素用于赋值
- 取两个链表元素的val值进行比较,谁小,就将他变成我们创建节点的下一个节点,并将当前节点的next节点更新为当前节点
- 如果,哪个链表为空了,我们链表的next指针就指向剩余的链表
三、AC 代码:
class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
//创建节点
ListNode res = new ListNode();
//赋值给用于操作的节点
ListNode cur = res;
//边界条件
while(l1!=null&&l2!=null){
//谁小就指向谁
if(l1.val<=l2.val){
cur.next = l1;
l1 = l1.next;
}else{
cur.next = l2;
l2 = l2.next;
}
cur = cur.next;
}
//谁为空,next节点就指向另一个链表
if(l1 == null){
cur.next = l2;
}
if(l2 == null){
cur.next = l1;
}
//返回结果
return res.next;
}
}
四、总结:
- 好了,代码撸完,我们
总结一下:-
创建节点,并赋值给操作用的节点
-
next指针的指向问题,以及如果一个链表为null,就指向另一个链表
-
返回创建节点的next节点
-