算法面试题——删除链表后第N个节点

news2024/11/18 9:27:14

在这里插入图片描述

给你一个链表,删除链表的倒数第 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]

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

快慢指针

为什么要用dummy哑结点?

一般来说,链表题中涉及到删除、交换顺序等,会使用到dummy节点

不使用dummy节点会怎样?

不使用的话,题目要求返回链表的头结点。因此我们可以选择返回head。但是,我们需要考虑一个边界问题,如果要求删除链表的头结点呢?对于这种特殊情况,如果不使用dummy节点的话就比较复杂了。由于我们在删除操作的时候,是希望找到【想删除节点】的前一个节点。如果想删除的节点正好是第一个,那怎么办?要么特殊处理,要么设置一个新节点——dummy节点,把新节点指向头结点,这样头结点就也有前一个节点了——即dummy节点,这样删除操作就不需要对头结点进行特殊判断了。

def test(head,n):
    """
    双指针,让一个指针(fast)先跑n步,后面每次两个指针都往后走一步,
    直到(循环)快指针走到末尾。此时慢指针(slow)就停在倒数第N个节点的前一个节点。
    :param head:
    :param n:
    :return:
    """
    left=ListNode()
    right=ListNode()
    dummy=ListNode()

    # step1: 快指针先走n步
    for i in range(n):
        right=right.next

    # step2: 快慢指针同时走,直到fast指针到达尾部节点,此时slow到达倒数第N个节点的前一个节点
    while right.next:
        left=left.next
        right=right.next

    # step3: 删除节点,并重新连接
    left.next=left.next.next
    return dummy.next

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言百日刷题第十三天

前言 今天是刷题第13天,放弃不难,但坚持一定很酷~ 临近期末,再刷一套模拟题 C语言百日刷题第十三天前言选择题判断题编程题选择题 1.若由定义int*p1,*p2,m5,n;以下赋值语句都正确的选项是() A、p1&m;p2&n…

signintech/gopdf功能介绍与代码示例

signintech/gopdf功能介绍与代码示例 PDF相关常识以及signintech/gopdf功能概览 代码示例: 参考:https://gitee.com/ixuer/gopdf_example 代码示例包括: 设置页面配置,如宽度和高度。test/font: 添加ttf字体,并设置…

计算机毕业设计springboot+vue基本微信小程序的快递收发小程序

项目介绍 随着Internet的发展,人们的日常生活已经离不开网络。未来人们的生活与工作将变得越来越数字化、网络化和电子化。本文以实际运用为开发背景,运用软件工程原理和开发方法,它主要是采用java语言技术、springboot框架和微信小程序来完成对系统的设计。整个开发过程首先对…

element-ui的Dropdown下拉菜单,传递多个参数

element-ui的Dropdown下拉菜单&#xff0c;传递多个参数 原因&#xff1a; Dropdown下拉菜单只允许我们传递一个参数 解决步骤: 在允许我们传递一个参数的哪里提前调用方法: 以前&#xff1a;<el-dropdown-item command"a"> 测试 </el-dropdown-item> 现…

一文揭密字节跳动薪资职级,资深测试开发居然能拿......

曾经的互联网是PC的时代&#xff0c;随着智能手机的普及&#xff0c;移动互联网开始飞速崛起。而字节跳动抓住了这波机遇&#xff0c;2015年&#xff0c;字节跳动全面加码短视频&#xff0c;从那以后&#xff0c;抖音成为了字节跳动用户、收入和估值的最大增长引擎。 自从字节逐…

Docker 基础和常用命令总结

一&#xff0c;Docker 简介 1.1&#xff0c;什么是 Docker1.2&#xff0c;Docker 与虚拟机的区别1.3&#xff0c;Docker 架构1.4&#xff0c;为什么用 Docker 二&#xff0c;Docker 基本概念 2.1&#xff0c;镜像2.2&#xff0c;容器2.3&#xff0c;仓库 三&#xff0c;Docker …

【记录】网站变灰色怎么实现?

最近&#xff0c;大家应该注意到了&#xff0c;各大网站和APP都变成灰色了。原因也很简单&#xff0c;一般在清明节、全国哀悼日、大地震的日子、以及一些影响力很大的伟人逝世或纪念日的时候使用&#xff0c;使用后的网站的网页变成灰色(黑白色)&#xff0c;以表示对逝者的悼念…

补贴来了 | 人社部:获得这些证书,国家有补贴

近期&#xff0c;人社部等3部门发布《关于做好失业保险稳岗位提技能防失业工作的通知》&#xff0c;通知提出拓宽技能提升补贴受益范围&#xff1a; 1.领取失业保险金人员取得职业资格证书或职业技能等级证书的&#xff0c; 可按照初级(五级)不超过1000元、中级(四级)不超过150…

流程引擎activiti太难?(看这篇就够了)

一、工作流介绍 1、概念 工作流(Workflow)&#xff0c;就是通过计算机对业务流程自动化执行管理。它主要解决的是“使在多个参与者之间按照某种预定义的规则自动进行传递文档、信息或任务的过程&#xff0c;从而实现某个预期的业务目标&#xff0c;或者促使此目标的实现”。 …

[附源码]Python计算机毕业设计Djang基于vuejs的文创产品销售平台app

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

MPLS协议介绍

MPLS介绍 1.MPLS协议概述 MPLS根据自己的标签交换&#xff0c;需要给数据包先写上自己的标签&#xff0c;然后设备才能查看标签之后就转发&#xff0c;此标签是需要在原有的数据包的基础上加进去的&#xff0c;并没有将以前的包头删除&#xff0c;MPLS的标签加在了第二层帧的…

数据仓库规范建设指南

数据仓库规范建设指南 1.数仓公共开发规范 1.1 层次调用规范 稳定业务按照标准的数据流向进行开发&#xff0c;即ODS-> DWD-> DWS-> APP。 非稳定业务或探索性需求&#xff0c;可以遵循ODS-> DWD->APP或者ODS-> DWD-> DWM-> APP 两个模型数据流。 …

国际物流概述:国际物流的流程是什么?

国际运输有很多参与者:航运公司、预订代理、国际货运代理和报关行;本文主要介绍托运人、收货人、国际货运代理和航运公司这四大LCL运输的参与者。从托运人到收货人的货物运输有五个物理流程和两个单证流程&#xff0c;每次装运都需要进行。每个流程都有相关的费用&#xff0c;必…

windows系统安装opencv2.4.12及bug解决

目录前言一、opencv2.4.12安装二、BUG修复1、问题解决&#xff1a;找不到MSVCR100.dll,无法继续执行代码2、问题解决&#xff1a;无法定位程序输入点******于动态链接库opencv_highgui2412.lib上前言 最近在学习CUDA&#xff0c;对照cuda by example一书的例子对照实验&#x…

深入理解Linux网络技术内幕(一)——基础介绍

文章目录前言简介基础术语常见的编码模式内存缓存缓存和hash表引用计数垃圾收集函数指针和虚拟函数表&#xff08;VFT&#xff09;goto语句向量(数组)定义条件指示指令&#xff08;#ifdef及其系列指令&#xff09;条件检查的编译期间最优化互斥主机和网络之间的字节次序转换捕获…

C#学习记录——软件工程师必备素养与技能

『聪明是一种天赋&#xff0c;而善良是一种选择。』—— 网络 1、软件工程师的基本素养 2、个人素质必修课程 3、项目开发流程 具备了良好的个人素质和基础的编程知识&#xff0c;作为一名优秀的开发人员&#xff0c;还应熟悉一个软件项目怎么开展工作&#xff0c;这就是项目…

木字楠后台管理系统开发(1):SpringBoot项目初始化并引入基础文件

&#x1f3b6; 文章简介&#xff1a;木字楠后台管理系统(1)&#xff1a;SpringBoot项目初始化并引入基础文件 &#x1f4a1; 创作目的&#xff1a;为了带大家完整的体验木字楠后台管理系统模版的开发流程 ☀️ 今日天气&#xff1a;天气☁️很好。太阳晒在身上暖暖的 &#x1f…

ChatGPT到底是个啥?它会让我们失业么?

谈起AI届&#xff0c;几家大公司是无论如何都不能不提及的&#xff0c;谷歌的GoogleX与DeepMind (下围棋那个)、Meta的FAIR (Resnet提出者恺明所就职的)、OpenAI (搞大模型的领先公司&#xff0c;代表作是GPT&#xff0c;对标谷歌的Bert)、亚马逊 (中国AI研究生的实际导师李沐大…

正厚干货 软件测试用例设计方法之一_等价类划分

今天开始我们学习关于软件测试用例的设计方法。其中较为常用的是等价类划分发&#xff0c;那么我们就从等价类划分开始吧。一、等价类划分的介绍1.定义 把所有可能输入的数据&#xff0c;即程序的输入域划分策划国内若干部分&#xff08;子集&#xff09;&#xff0c;然后从每一…

数据处理技巧(9):MATLAB将多个矩阵放在同一行显示,并写入txt文件

MATLAB将多个矩阵放在同一行显示&#xff0c;并写入txt文件生成效果要打印的矩阵代码思路记录程序运行时间写入文档MATLAB程序生成效果相关链接记得点个赞再走~~~生成效果 将9个矩阵显示在MATLAB命令行窗口中&#xff0c;一行有3个矩阵&#xff0c;一列显示3个矩阵&#xff0c…