栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

LeetCode 合并两个有序链表

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LeetCode 合并两个有序链表

合并两个有序链表

题目来源:https://leetcode-cn.com/problems/merge-two-sorted-lists/

题目

将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

示例:

输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
解题思路
  1. 设定“哨兵节点”,用以正确返回合并后的链表;
  2. 控制 cur 指针,调整它的 next 指针;
  3. 比较两个链表的节点大小,将小的节点接在 cur 节点后面;
  4. 循环操作,当其中一个链表为空时终止;
  5. 若循环结束,其中一个链表不为空,则将剩余部分接在合并链表后面(因为两个链表都是有序的,所以剩余部分都比合并链表的元素大;
  6. 最后,返回合并的链表。
代码实现
# # Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#  self.val = x
#  self.next = None

class Solution:
    def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
 '''将两个有序链表合并成一个链表然后返回

 Args:
     l1: 有序链表 1
     l2: 有序链表 2
 
 Returns:
     返回合并后的有序链表
 '''
  # 定义一个哨兵节点,用以正确返回合并后的链表
 pre_head = ListNode(None)

 # 控制 cur 指针,比较节点大小
 cur = pre_head

 # 比较两个链表的节点大小,当两个链表任意一个为空,则终止
 while l1 and l2:
     # 当 l1 的节点较小,则指针指向 l1,同时向后移
     if l1.val < l2.val:
  cur.next, l1 = l1, l1.next
     else:  # 否则,指针指向 l2,同时向后移
  cur.next, l2 = l2, l2.next
     # 维护 cur 指针
     cur = cur.next
 # 考虑其中任意一个链表为空,将非空的链表拼接在合并链表后面
 cur.next = l1 if l1 else l2
 return pre_head.next
实现效果

以上为本篇的主要内容。


结语:祝大家新春大吉,平安喜乐

题外话:希望大家做好个人防护,如非必要,尽量不出门。

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号