LeetCode_Everyday:021 Merge Two Sorted Lists

LeetCode_Everyday:021 Merge Two Sorted Lists

      • 题目:
      • 示例:
      • 代码
      • 参考
      • 此外

LeetCode Everyday:坚持价值投资,做时间的朋友!!!

题目:

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

示例:

  • 示例 1:
    输入:1->2->4, 1->3->4
    输出:1->1->2->3->4->4
    

代码

方法一: 递归 题解

执行用时:56 ms, 在所有 Python3 提交中击败了18.41%的用户
内存消耗:13.7 MB, 在所有 Python3 提交中击败了7.14%的用户

# 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:
        if l1 and l2:
            if l1.val > l2.val: l1, l2 = l2, l1
            l1.next = self.mergeTwoLists(l1.next, l2)
        return l1 or l2

"""
For Example:    input:    l1:1->2->4  l2:1->3->4
               output:    1->1->2->3->4->4
"""
l1 = ListNode(1)
l1.next = ListNode(2)
l1.next.next = ListNode(4)
l2 = ListNode(1)
l2.next = ListNode(3)
l2.next.next = ListNode(4)
                
solution = Solution()
result = solution.mergeTwoLists(l1, l2)
print('输出为:%d->%d->%d->%d->%d->%d' % \
      (result.val, result.next.val, result.next.next.val, result.next.next.next.val,\
      result.next.next.next.next.val, result.next.next.next.next.next.val))

方法二: 递循环遍历 题解

执行用时:44 ms, 在所有 Python3 提交中击败了79.61%的用户
内存消耗:13.8 MB, 在所有 Python3 提交中击败了7.14%的用户

# 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:
        dummy = ListNode(0)
        move = dummy
        while l1 and l2:
            if l1.val <= l2.val:
                move.next = l1
                l1 = l1.next
            else:
                move.next = l2
                l2 = l2.next
            move = move.next
        move.next = l1 if l1 else l2
        return dummy.next

"""
For Example:    input:    l1:1->2->4  l2:1->3->4
               output:    1->1->2->3->4->4
"""
l1 = ListNode(1)
l1.next = ListNode(2)
l1.next.next = ListNode(4)
l2 = ListNode(1)
l2.next = ListNode(3)
l2.next.next = ListNode(4)
                
solution = Solution()
result = solution.mergeTwoLists(l1, l2)
print('输出为:%d->%d->%d->%d->%d->%d' % \
      (result.val, result.next.val, result.next.next.val, result.next.next.next.val,\
      result.next.next.next.next.val, result.next.next.next.next.next.val))
      

参考

  1. https://leetcode-cn.com/problems/merge-two-sorted-lists/solution/yi-kan-jiu-hui-yi-xie-jiu-fei-xiang-jie-di-gui-by-/
  2. https://leetcode-cn.com/problems/merge-two-sorted-lists/solution/xin-shou-you-hao-xue-hui-tao-lu-bu-fan-cuo-4nian-l/

此外

  • 原创内容转载请注明出处
  • 请到我的GitHub点点 star
  • 关注我的 CSDN博客
  • 关注我的哔哩哔哩
  • 关注公众号:CV伴读社

在这里插入图片描述

热门文章

暂无图片
编程学习 ·

JavaScript-Promise的使用及详细解释

JavaScript-Promise的使用及详细解释案例使用多种方法实现以下案例第一种---setTimeout嵌套第二种---封装函数Promise详解小案例第三种---使用Promise来实现最开始的案例Promise---具体使用的案例第一版---点击按钮显示图片第二版---加载出第一张之后在加载其他,依次加载第三版…
暂无图片
编程学习 ·

c#导入百度统计API数据

最近项目中需要增加一些新功能:当前在线人数,总访问量统计,今日访问量,上一年度访问量,找了很多第三方统计工具,最后确定用百度统计,因为项目是vue的,直接引入的时候出现了跨域,发现前端用jsonp解决不了,所以就直接用c#请求再返回给前端了,话不多说,具体操作如下(…
暂无图片
编程学习 ·

02 | 该如何选择消息队列?

1.应用场景见: https://blog.csdn.net/william_n/article/details/1040254082.学习/操作2.1 阅读文档02 | 该如何选择消息队列?李玥 2020-01-1400:0013:59讲述:李玥 大小:12.81M你好,我是李玥。这节课我们来聊一下几个比较常见的开源的消息队列中间件。如果你正在做消息队…
暂无图片
编程学习 ·

solr自动更新索引,tomcat+solr

核心文件夹: tomcat-8.0.35-search------端口8888 solr-7.2.0------端口8984 核心配置: 用于配置solr索引的定时增量更新和全部更新,两个文件保持一致就可以。 /tomcat/tomcat-8.0.35-search/bin/solr/conf/dataimport.properties /solr-7.2.0/server/solr/chuai/conf/datai…
暂无图片
编程学习 ·

操作系统虚拟页的页表表项

为了能够实现页面置换算法中的请求调页,需要在页表的下面增加一些位,来辅助完成这样的工作。 每一页上的表项里面有4个位是比较重要: 逻辑页号------------访问位--------修改位--------保护位----------驻留位----------物理页帧号 驻留位 表示该页是在内存中还是在外存。如…
暂无图片
编程学习 ·

Java设计模式-单例模式(全例记录)

1. 基础介绍核心作用:保证一个类只有一个实例,并提供一个访问该实例的全局访问点; 优点:由于单例模式只生成一个实例,所以减少了系统的开销,当一个系统启动需要较多的资源时,可以直接在系统启动时产生一个单例对象,然后使其永久驻留内存;单例模式可以在系统设置全局访…
暂无图片
编程学习 ·

layui layer.open 弹窗,title标题根据不同场景显示不同的值

以表格操作弹窗为例表格有添加,修改,查看等等共用一个编辑弹窗,这时候弹窗标题就需要根据操作变化发生变化 废话少说,具体操作代码如下: parent.$(".layui-layer-title")[0].innerText= “要修改的内容”; //情况不同可能不需要parent的就别加 $(".layui-…
暂无图片
编程学习 ·

OpenCV联通域检测 connectedComponentsWithStats

文章目录函数介绍C++ 代码示例Python 代码示例函数介绍 输入必须是单通道图像,最好是二值图 int cv::connectedComponents (cv::InputArrayn image, // input 8-bit single-channel 二值图cv::OutputArray labels, // output label mapint …
暂无图片
编程学习 ·

Centos7中iptables防火墙的设置

防火墙的种类:包过滤防火墙 代理防火墙 状态检测技术通信原理: 一台客户端>iptables>服务器 数据包---》iptables把数据包分类进行处理(各种表rew,mangle,nat,filter表等)-- -》 filter:允许,不允许通过数据包。 nat:进行数据转换的数据包。 mangle:对数据包做…
暂无图片
编程学习 ·

mysql怎么连接navicat

可能出现下面的问题远程连接发现没有什么问题 在命令行 mysql可以正常使用执行三条指令就可以解决
暂无图片
编程学习 ·

HCL实验8:NAT搭建私有网络

NAT 通过NAT技术,进行私有网络的搭建 拓扑图先对路由器的端口进行配置 R1 [H3C]sys R1 [R1]INT G0/0 [R1-GigabitEthernet0/0]ip address 192.168.56.1 24 [R1-GigabitEthernet0/0]undo shutdown [R1-GigabitEthernet0/0]quit [R1]int s1/0 [R1-Serial1/0]ip address 100.100.…
暂无图片
编程学习 ·

C++ builder listview 自绘条形图

菜鸟的学习笔记,如果对你有用最好。高手请无视。ListView 要开 Doublebuffervoid __fastcall TForm1::ListView1CustomDrawSubItem(TCustomListView *Sender, TListItem *Item,int SubItem, TCustomDrawState State, bool &DefaultDraw) { DefaultDraw=true; int lef=0; T…
暂无图片
编程学习 ·

LeetCode 535. TinyURL 的加密与解密

目录结构1.题目2.题解1.题目TinyURL是一种URL简化服务, 比如:当你输入一个URL https://leetcode.com/problems/design-tinyurl 时,它将返回一个简化的URL http://tinyurl.com/4e9iAk.要求:设计一个 TinyURL 的加密 encode 和解密 decode 的方法。你的加密和解密算法如何设计…
暂无图片
编程学习 ·

Git 操作文档

Git 网站操作1.打开Git的网站,注册一个账号2.注册成功,登录之后是这样3.点击 New Project 新建一个项目填写完成之后选择一下项目的“可见等级”;有:“ Private (私有)” 、“ Internal (内部)”、“ Public (公开)”点击 “ Create Project ”按钮,这个时候项目就已…
暂无图片
编程学习 ·

04-javaWeb-jQuery

目录jQueryjquery中效果案例1-弹出广告选择器总结案例2-隔行换色属性和css操作总结对属性的操作对css操作案例3-全选或者全不选jQuery数据遍历、val设置、标签设置、元素创建案例4-省市联动选择器——表单对象属性过滤选择器案例5-左右移动总结jQuery技术:定时器jQueryjquery和…