21. 合并两个有序链表
题目
- 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例 1:
输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]
示例 2:
输入:l1 = [], l2 = []
输出:[]
示例 3:
输入:l1 = [], l2 = [0]
输出:[0]
python
双指针
class Solution:
def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]:
# 创建一个新的头节点
new_head = ListNode(0)
tail = new_head#尾指针
# 依次比较两个链表的节点,并将较小的节点插入到新链表的尾部
while list1 !=None and list2!=None:
if list1.val <= list2.val:
tail.next = list1#放在新的链表后面
list1 = list1.next#往后移继续判断
else:
tail.next = list2#放在新的链表后面
list2 = list2.next#往后移继续判断
tail = tail.next
# 将剩余的节点直接连接到新链表的尾部
if list1:#如果list1还没遍历完
tail.next = list1#直接加在后面
elif list2:#如果list2还没遍历完
tail.next = list2#直接加在后面
return new_head.next
javascript
双指针
- 双指针,小的加入结果链表(移动当前链表指针和结果链表指针),结束条件是某一个链表结束。把还没结束的链表全部加入结果链表
var mergeTwoLists = function(list1, list2) {
let a = list1, b = list2
let result = new ListNode(0)
let c = result
while(a && b){
if(a.val<= b.val){
c.next = a
a=a.next
c = c.next
}
else{
c.next = b
b = b.next
c = c.next
}
}
if(a){
c.next = a
}
if(b){
c.next = b
}
return result.next
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~