LeetCode-19. 删除链表的倒数第 N 个结点【链表 双指针】

LeetCode-19. 删除链表的倒数第 N 个结点【链表 双指针】

  • 题目描述:
  • 解题思路一:双指针
  • 解题思路二:优化
  • 解题思路三:0

题目描述:

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。

示例 1:
在这里插入图片描述
输入:head = [1,2,3,4,5], n = 2
输出:[1,2,3,5]
示例 2:

输入:head = [1], n = 1
输出:[]
示例 3:

输入:head = [1,2], n = 1
输出:[1]

提示:

链表中结点的数目为 sz
1 <= sz <= 30
0 <= Node.val <= 100
1 <= n <= sz

进阶:你能尝试使用一趟扫描实现吗?

解题思路一:双指针

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def removeNthFromEnd(self, head: Optional[ListNode], n: int) -> Optional[ListNode]:
        dummy_head = ListNode()
        dummy_head.next = head
        cur = pre = dummy_head
        for _ in range(n):
            cur = cur.next
        while cur.next:
            cur = cur.next
            pre = pre.next
        pre.next = pre.next.next
        return dummy_head.next

时间复杂度:O(n)
空间复杂度:O(1)

解题思路二:优化

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def removeNthFromEnd(self, head: Optional[ListNode], n: int) -> Optional[ListNode]:
        dummyHead = ListNode(next = head)
        slow, fast = dummyHead, dummyHead
        while n > 0 and fast != None:
            fast = fast.next
            n -= 1
        fast = fast.next
        while fast != None:
            fast = fast.next
            slow = slow.next
        slow.next = slow.next.next
        return dummyHead.next

时间复杂度:O(n)
空间复杂度:O(1)

解题思路三:0


时间复杂度:O(n)
空间复杂度:O(n)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/513064.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

今日头条signature参数js逆向(爬虫)

今日头条是ajax动态加载 话不多说&#xff0c;直接上代码 windowglobal;window.location{"ancestorOrigins": {},"href": "https://www.toutiao.com/","origin": "https://www.toutiao.com","protocol": "…

python基础——模块【模块的介绍,模块的导入,自定义模块,*和__all__,__name__和__main__】

&#x1f4dd;前言&#xff1a; 这篇文章主要讲解一下python基础中的关于模块的导入&#xff1a; 1&#xff0c;模块的介绍 2&#xff0c;模块的导入方式 3&#xff0c;自定义模块 &#x1f3ac;个人简介&#xff1a;努力学习ing &#x1f4cb;个人专栏&#xff1a;C语言入门基…

Mediapipe框架(二)人脸检测

Mediapipe框架(二)人脸检测 MediaPipe 是一款由 Google Research 开发并开源的多媒体机器学习模型应用框架。谷歌的一系列重要产品&#xff0c;如Google Lens、ARCore、Google Home等都已深度整合了 MediaPipe。 MediaPipe目前支持的解决方案(Solution)及支持的平台如下图所示…

得物面试:10wqps高并发,如何防止重复下单?

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试资格&#xff0c;遇到很多很重要的面试题&#xff1a; 10wqps高并发&#xff0c;如何防止重复提交/支付订单&…

基于springboot+vue+微信小程序的医院预约挂号系统(前后端分离)(含参考论文)

基于springbootvue微信小程序的医院预约挂号系统(前后端分离)(含参考论文) 前言 本系统适用于毕业设计、课程设计或者学习等&#xff0c;适合选题&#xff1a;医院预约挂号、微信小程序、前后端分离等。系统采用springbootvue整合开发&#xff0c;前端框架主要使用了element-…

半山腰总是挤的,你得去山顶看看

如果你去爬山&#xff0c;你会发现&#xff0c;半山腰的人总是最多的&#xff0c;越往上走&#xff0c;人越少&#xff0c;而最好的风景你只能到山顶去看。所以如果你想要欣赏到最好的风景&#xff0c;往往付出的努力也最多。爬山不能走捷径&#xff0c;只能你一步一个脚印走上…

块设备的读写框架

生成块设备 我们以虚拟文件的接口&#xff0c;来看这个框架&#xff1b;因为这是从从应用层到内核的必经之路&#xff1b;使用vfs_mknod来生成块设备文件&#xff0c;并初始化fops mknoddo_mknodatvfs_mknodshmem_mknodshmem_get_inodeinit_special_inode void init_special_…

SV学习笔记(三)

类和对象概述 类和对象 面向对象的编程语言更符号人对自然语言的理解&#xff08;属性property和功能function&#xff09;。 这个世界由无数的类&#xff08;class&#xff09;和对象&#xff08;object&#xff09;构成的。 类是将相同的个体抽象出来的描述方式&#xff0c…

【Servlet】thymeleaf快速入门

文章目录 一、thymeleaf介绍二、入门案例 一、thymeleaf介绍 Thymeleaf&#xff1a;视图模板技术 在index.html页面上加载java内存中的fruitList数据&#xff0c;这个过程我们称之为渲染&#xff08;render&#xff09;。 thymeleaf是用来帮助我们做视图渲染的一个技术。 二…

Python学习从0到1 day20 第二阶段 面向对象 ③ 继承

循此苦旅&#xff0c;以达天际 —— 24.4.3 一、继承的基础语法 学习目标&#xff1a; ① 理解继承的概念 ② 掌握继承的使用方式 ③ 掌握pass关键字的作用 单继承 语法&#xff1a; class 类名(父类名): 类内容体 继承分为&#xff1a;单继承和多继承 继承表示&#xff1a;将从…

redis---HyperLogLog

HyperLogLog是一个基数统计的算法&#xff0c;如果集合中的每个元素都是唯一且不重复的&#xff0c;那么这个集合的基数就是集合中元素的个数 它的原理是使用随机算法来计算&#xff0c;通过牺牲一定的精确度&#xff0c;来换取更小的内存消耗&#xff0c;优点就是占用内存小。…

“帮助“Java成长的世界级大师不简单!

文章目录 初探编程&#xff1a;“天啊&#xff0c;真酷&#xff0c;程序真的能学习。”哺育Java成长&#xff0c;成为Java幕后英雄出书《Effective Java》斩获Jolt图书大奖 是谁&#xff1f;作品一出版就获得著名的Jolt图书大奖&#xff0c;每一版本豆瓣评分均超9.0&#xff01…

[已解决] slam_gmapping: undefined symbol: _ZN8GMapping14sampleGaussianEdm问题

之前用的好好的gampping建图功能包&#xff0c;今天突然不能用了&#xff0c;运行报错如下&#xff1a; /opt/ros/noetic/lib/gmapping/slam_gmapping: symbol lookup error: /opt/ros/noetic/lib/gmapping/slam_gmapping: undefined symbol: _ZN8GMapping14sampleGaussianEdm …

ShardingJdbc兼容达梦

ShardingJdbc兼容达梦 ​ 本章详细说ShardingJdbc和达梦数据库的扩展和配置问题&#xff0c;ShardingJdbc和DruidDataSource、Mybatis整合的兼容、冲突问题&#xff0c;以及这些问题的解决方案。&#xff0c;干货满满&#xff0c;全网独一份&#xff0c;建议收藏。本章不说Sha…

数码论坛系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)电子科技数码爱好者交流信息新闻畅聊讨论评价

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读300套最新项目持续更新中..... 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含ja…

680.验证回文串II-力扣

680.验证回文串II-力扣 给你一个字符串 s&#xff0c;最多可以从中删除一个字符。 请你判断 s 是否能成为回文字符串&#xff1a;如果能&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false。 示例1&#xff1a; 输入&#xff1a;s “aba” 输出&#xff1a;true示…

Python就业前景如何?薪资待遇怎么样?

前言 Python作为一种高级编程语言&#xff0c;已经在多个领域得到了广泛的应用&#xff0c;包括数据分析、人工智能、Web开发等。随着技术的不断发展和应用领域的不断扩展&#xff0c;Python的就业前景也越来越广阔。 首先&#xff0c;Python在数据分析领域的应用非常广泛。随…

mac | Windows 本地部署 Seata2.0.0,Nacos 作为配置中心、注册中心,MySQL 存储信息

1、本人环境介绍 系统 macOS sonama 14.1.1 MySQL 8.2.0 &#xff08;官方默认是5.7版本&#xff09; Seata 2.0.0 Nacos 2.2.3 2、下载&数据库初始化 默认你已经有 Nacos、MySQL&#xff0c;如果没有 Nacos 请参考我的文章 &#xff1a; Docker 部署 Nacos&#xff08;单机…

滴滴盈利,司机“受伤”

近日&#xff0c;滴滴对外披露了2023年Q4及全年业绩。 财报数据显示&#xff0c;2023年Q4&#xff0c;滴滴实现营收494亿元&#xff0c;同比增长55.4%&#xff0c;净利润达11亿元&#xff1b;2023年全年滴滴实现营收共计1924亿元&#xff0c;同比增长36.6%&#xff0c;净利润达…

springboot对接minio的webhook全过程

前言 近日需要将minio的apache2.0版本给用起来&#xff0c;顺便要完善一下原有的文件上传管理系统&#xff0c;其中很重要的一点是&#xff0c;在原有客户端直传的基础上&#xff0c;再添加 minio 的上传回调给服务端做后续处理。 本文重点在于&#xff0c;介绍整个minio与spr…