【力扣Hot100】合并两个有序链表

题目描述

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

解题思路

  • 技巧:递归
  • 伪代码:
    若l1空:返回l2
    若l2空:返回l1
    若l1指向的节点数大于l2(l1.val>l2.val):返回l1且更新l1.next
    (结果链表的头结点就是l1,因此需要更新l1.next)
    否则:返回l2且更新l2.next(结果链表的头结点就是l2)
  • l1.next = self.mergeTwoLists(list1.next,list2)
    表示l1的下个节点由l1之后剩余的节点和l2的所有节点确定,即对两者继续排序的结果
    依次递归,每次递归都会有一个节点l1或l2挂在之前结果后
    直至l1或l2为空,返回剩余节点就结束

tips

  1. l1.val表示节点的数值
  2. python调用函数本身的写法是self.函数名(参数1,参数2)

代码

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution(object):
    def mergeTwoLists(self, list1, list2):
        """
        :type list1: Optional[ListNode]
        :type list2: Optional[ListNode]
        :rtype: Optional[ListNode]
        """
        if list1 is None:
            return list2
        if list2 is None:
            return list1
        if list1.val<list2.val:
            list1.next = self.mergeTwoLists(list1.next,list2)
            return list1
        else:
            list2.next = self.mergeTwoLists(list1,list2.next)
            return list2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值