博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
每日一道算法题--leetcode 21--合并两个有序链表--python
阅读量:6607 次
发布时间:2019-06-24

本文共 1236 字,大约阅读时间需要 4 分钟。

【题目描述】

【代码思路】 最终返回的是一个新的链表的头结点,因此先定义一个新的空结点作为返回结果的头部,因为这个头结点内容为None,我们最终返回的是head.next这个结点,再定义一个current结点,用于在循环中指向新链表的尾部,以便找到l1,l2中较小的,链接在尾部之后。

head=ListNode(None)  current=head复制代码

在一个循环中,当l1和l2都不为空时,从两个链表的头结点开始做比较,在每次循环中,找到l1,l2中较小的那个结点,假如l1.val较小,链接在current之后,即current.next=l1,然后l1和current都依次向后错一位,current到新链表的尾部,l1到下一个比较位置。

current.next=l1current=l1l1=l1.next复制代码

直至l1,l2中有一者或者二者都为空的时候,while循环结束,把二者中不为空的那个结点链接在current之后即可。

if l1:current.next=l1if l2:current.next=l2复制代码

这个解决办法的空间复杂度为O(1)因为只多占用了head和current两个结点空间。时间复杂度为O(m+n),m,n是两个输入链表的长度,因为只遍历了两个链表一次。 【源代码】

# Definition for singly-linked list.# class ListNode(object):#     def __init__(self, x):#         self.val = x#         self.next = Noneclass Solution(object):    def mergeTwoLists(self, l1, l2):        """        :type l1: ListNode        :type l2: ListNode        :rtype: ListNode        """        head=ListNode(None)          current=head        while l1 and l2:            if l1.val<=l2.val:                current.next=l1                current=l1                l1=l1.next                  else:                current.next=l2                current=l2                l2=l2.next        if l1:current.next=l1        if l2:current.next=l2        return head.next复制代码

转载地址:http://dudso.baihongyu.com/

你可能感兴趣的文章
七月SSL行业新闻回顾
查看>>
专访Mockplus用户齐嘉伟 | Mockplus满足做原型的所有需求
查看>>
01、Vue.js 开篇---Vue的介绍及准备工作
查看>>
Java操作MongoDB采用MongoRepository仓库进行条件查询
查看>>
你应该知道的 RPC 原理
查看>>
将Android手机无线连接到Ubuntu实现唱跳Rap
查看>>
对话 | 薛娅菲:从0到1,行则将至
查看>>
开发一个工业互联网应用到底需要几步?
查看>>
别人在忙挖矿,阿里工程师却悄悄用区块链搞了件大事!
查看>>
Flutter 构建完整应用手册-设计基础知识
查看>>
对事件的基本理解
查看>>
111111 排序算法
查看>>
四周第二次课(11月7日) 5.1 vim介绍 5.2 vim颜色显示和移动光标 5.3 vim一般模式下移动光标 5.4 vim一般模式下复制、剪切和粘贴...
查看>>
rpm包介绍、 rpm工具用法 、yum工具用法、 yum搭建本地仓库
查看>>
PyCharm的Column Selection Mode提供了列选择功能。
查看>>
MySQL的索引策略(1)
查看>>
select下拉框,选择其中一个,然后进行查询,完成之后,页面上的select框不回显当前查询时选中的值...
查看>>
python3基础——函数(2)
查看>>
TOKEN设计
查看>>
yum更换国内源、yum下载rpm包 、源码包安装
查看>>