力扣:21.合并两个有序链表

刷力扣热题–第十六天:21.合并两个有序链表
菜鸟第十六天开始奋战敲代码,持之以恒,见证成长

1.题目简介

在这里插入图片描述

2.题目解答

主打一个分叉,减枝.选出所有可能性去规避,时间复杂度O(N+M),空间复杂度O(1)–只包含链表头的存储,实现如下:
在这里插入图片描述
实现了,看大家做的时候会选择用递归做,一步一步的进行迭代,实现一下:
在这里插入图片描述
结果竟然显示没有刚才方法高效,但这种方法的思想还是很值得去借鉴的.听难想的,不看很难想出来感觉~

3.心得体会

这道题是简单题,想起来不难,但找一个合适的方案还是需要好好思考一下的~
初始代码:

class Solution(object):
    def mergeTwoLists(self, list1, list2):
        """
        :type list1: Optional[ListNode]
        :type list2: Optional[ListNode]
        :rtype: Optional[ListNode]
        """
        if list1 is None or list2 is None:
            if list1 is not None:
                return list1
            elif list2 is not None:
                return list2
            else:
                return None
        if list1 is not None and list2 is not None:
            if list1.val <= list2.val:
                temp = list1
                list1 = list1.next
            else:
                temp = list2
                list2 = list2.next
        temp_list = temp
        while list1 is not None or list2 is not None:
            if list1 is None and list2 is not None:
                temp.next = list2
                list2 = list2.next
            if list1 is not None and list2 is None:
                temp.next = list1
                list1 = list1.next
            if list1 is not None and list2 is not None:
                if list1.val <= list2.val:
                    temp.next = list1
                    list1 = list1.next
                else:
                    temp.next = list2
                    list2 = list2.next
            temp = temp.next
        return temp_list

改进代码:

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

4.做题时长

7月21日19:30-20:14

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值