【链表】Leetcode 19. 删除链表的倒数第 N 个结点【中等】

删除链表的倒数第 N 个结点

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

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

解题思路

  • 1、使用快慢指针找到要删除节点的前一个节点。
  • 2、删除目标节点。

具体步骤

  • 初始化两个指针 first 和 second,都指向链表的头节点。
  • 将 first 移动到第 n 个节点。
  • 然后同时移动 first 和 second,直到 first 指向链表末尾。
  • 此时 second 的下一个节点就是要删除的节点,
  • 将 second.next 指向 second.next.next

java实现

public class RemoveNthFromEnd {public ListNode removeNthFromEnd(ListNode head, int n) {ListNode dummy = new ListNode(0);dummy.next = head;ListNode first = dummy;ListNode second = dummy;// 将 first 移动到第 n 个节点for (int i = 0; i <= n; i++) {first = first.next;}// 同时移动 first 和 second,直到 first 指向末尾while (first != null) {first = first.next;second = second.next;}// 删除倒数第 n 个节点second.next = second.next.next;return dummy.next;}public static void main(String[] args) {// 构造链表 1 -> 2 -> 3 -> 4 -> 5ListNode head = new ListNode(1);head.next = new ListNode(2);head.next.next = new ListNode(3);head.next.next.next = new ListNode(4);head.next.next.next.next = new ListNode(5);int n = 2;// 调用 removeNthFromEnd 方法删除倒数第 n 个节点RemoveNthFromEnd solution = new RemoveNthFromEnd();ListNode result = solution.removeNthFromEnd(head, n);// 打印删除后的链表while (result != null) {System.out.print(result.val + " ");result = result.next;}// 输出:1 -> 2 -> 3 -> 5}
}
class ListNode {int val;ListNode next;ListNode(int x) {val = x;next = null;}
}

时间空间复杂度

  • 时间复杂度:O(n),其中 n 是链表的长度,需要遍历一次链表。
  • 空间复杂度:O(1),只需要使用常数级别的额外空间。

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

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

相关文章

使用Jmeter进行http接口测试的实践

前言&#xff1a; 本文主要针对http接口进行测试&#xff0c;使用Jmeter工具实现。 Jmter工具设计之初是用于做性能测试的&#xff0c;它在实现对各种接口的调用方面已经做的比较成熟&#xff0c;因此&#xff0c;本次直接使用Jmeter工具来完成对Http接口的测试。 一、开发接口…

深入理解二叉树构建和中序遍历

在计算机科学中&#xff0c;二叉树是一种重要的数据结构&#xff0c;用于模拟层次化结构的关系。本文将介绍一个简单的C语言程序&#xff0c;该程序实现了对输入字符数组的解析&#xff0c;并构建相应的二叉树&#xff0c;随后对二叉树进行中序遍历。 二叉树定义 首先&#x…

Redis监控工具

Redis 是一种 NoSQL 数据库系统&#xff0c;以其速度、性能和灵活的数据结构而闻名。Redis 在许多领域都表现出色&#xff0c;包括缓存、会话管理、游戏、排行榜、实时分析、地理空间、叫车、聊天/消息、媒体流和发布/订阅应用程序。Redis 数据集完全存储在内存中&#xff0c;这…

揭秘爆红AI图像增强神器:Magnific AI如何做到1亿像素放大?

最近有个很火的AI图像增强应用&#xff0c;叫Magnific AI。 你知道吗&#xff0c;它发布一个多月就有40万人注册了&#xff01; 这个应用确实非常实用&#xff0c;它不仅利用AI技术放大了图像&#xff0c;还能提升分辨率&#xff0c;从而使图片呈现得更加清晰。 值得一提的是…

扩展以太网(数据链路层)

目录 一、在物理层扩展以太网 二、在数据链路层扩展以太网 三、以太网交换机的特点 四、以太网交换机的交换方式 五、以太网交换机的自学习功能 六、小结 一、在物理层扩展以太网 使用光纤扩展&#xff1a; • 主机使用光纤&#xff08;通常是一对光纤&#xff09;和…

跨境电商商品数据集爬取方案|跨境电商商品采集API接口

跨境电商数据集介绍 我们就以电商商品的数据集作为依托&#xff0c;从而来了解什么是数据集&#xff0c;可以通过什么方式来进行数据集的获取。 什么是数据集 电商商品数据集通常是指收集自电子商务平台的商品信息的结构化数据集合。这些数据包括但不限于商品名称、价格、描…

有关Theano和PyTensor库

根据Github里面的介绍&#xff0c;PyTensor是源于Theano&#xff0c; Theano目前应该已经不再开发了&#xff0c;更新都是很多年前。 因此PyTensor在背景介绍中说 PyTensor is a fork of Aesara, which is a fork of Theano. Theano和PyTensor都是计算相关的库&#xff0c;可以…

数据结构面试常见问题之- Sort with Swap(0,*)

&#x1f600;前言 在数据结构面试中&#xff0c;排序算法是考察重点之一。传统的排序算法&#xff0c;例如冒泡排序、快速排序等&#xff0c;都依赖于元素之间的比较和交换操作。然而&#xff0c;在某些情况下&#xff0c;我们可能只允许使用特定的交换操作&#xff0c;例如只…

【网络原理】详解HTTPS协议加密过程

文章目录 &#x1f334;HTTPS协议是什么&#xff1f;&#x1f384;运营商劫持事件&#x1f332;HTTPS的工作过程&#x1f338;对称加密&#x1f338;非对称加密&#x1f338;引入证书&#x1f338;完整流程 &#x1f333;HTTPS加密总结⭕总结 &#x1f334;HTTPS协议是什么&…

Kafka主题二三事

客户端如果订阅了多次主题&#xff0c;则以最后一次为主&#xff0c;例如 consumer.subscribe(Arrays.asList(topic1)); consumer.subscribe(Arrays.asList(topic2)); 则订阅的只有topic2。 消费者订阅主题是支持正则表达式&#xff0c;这样如果有新topic上线&#xff0c;并且匹…

Spring Cloud Alibaba微服务从入门到进阶(七)(服务容错-Sentinel)

雪崩效应 我们把基础服务故障&#xff0c;导致上层服务故障&#xff0c;并且这个故障不断放大的过程&#xff0c;成为雪崩效应。 雪崩效应&#xff0c;往往是因为服务没有做好容错造成的。 微服务常见容错方案 仓壁模式 比如让controller有自己独立的线程池&#xff0c;线程池满…

SQL语句每日一练二

1.给出 Customers 表 如下&#xff1a; cust_idcust_namecust_contactcust_citya1Andy LiAndy LiOak Parka2Ben LiuBen LiuOak Parka3Tony DaiTony DaiOak Parka4Tom ChenTom ChenOak Parka5An LiAn LiOak Parka6Lee ChenLee ChenOak Parka7Hex LiuHex LiuOak Park 【问题】编…

【快速幂、欧拉函数】蓝桥杯第十四届---互质数的个数

给定 a, b&#xff0c;求 1 ≤ x < a^b 中有多少个 x 与 a^b 互质。由于答案可能很大&#xff0c;你只需要输出答案对 998244353 取模的结果。 输入格式 输入一行包含两个整数分别表示 a, b&#xff0c;用一个空格分隔。 输出格式 输出一行包含一个整数表示答案。 样例…

Windows 设置多显示器显示

Windows 设置多显示器显示 1. Windows 7 设置 HDMI 输出2. Windows 11 设置多显示器显示References 1. Windows 7 设置 HDMI 输出 2. Windows 11 设置多显示器显示 ​​​ References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

畅谈AIGC,ISIG-AIGC技术与应用发展峰会成功举办

3月16日&#xff0c;第四届ISIG中国产业智能大会在上海中庚聚龙酒店如期开幕&#xff0c;此次大会由苏州市金融科技协会指导、企智未来科技&#xff08;RPA中国、LowCode低码时代、AIGC开放社区&#xff09;主办。大会聚集了来自不同领域的专家学者、行业领军人物及技术研发者&…

Linux系统——nload命令

目录 引言 一、nload安装 二、nload命令详解 1.命令使用 2.命令详解 3.命令选项 3.1-u选项 nload -u h 自动变更单位&#xff0c;Bit/s nload -u H 自动变更单位&#xff0c;Byte/s 3.2-m选项 nload -m 不显示流量图 nload -m -H ens33 不显示流量图&#xff0c;以By…

c++的学习之路:1、学习前言

一、什么是c C语言是结构化和模块化的语言&#xff0c;适合处理较小规模的程序。对于复杂的问题&#xff0c;规模较大的程序&#xff0c;需要高度的抽象和建模时&#xff0c;C语言则不合适。为了解决软件危机&#xff0c; 20世纪80年代&#xff0c; 计算机界提出了OOP(object …

[AIGC] OkHttp:轻松实现网络请求

OkHttp&#xff1a;轻松实现网络请求 当我们需要在应用程序中进行HTTP网络请求时&#xff0c;Java的标准库可以提供基本的功能&#xff0c;但使用起来却不那么方便。OkHttp是一款开源的网络请求库&#xff0c;它能够简化网络请求的工作&#xff0c;提高了工作效率。我们将从&q…

<sa8650>sa8650 memory-之-内存参数分析

<sa8650>sa8650 memory-之-内存参数分析 1、前言2、内存分解 (Memory Breakdown)3、QNX 分割堆( QNX Carveout Heaps)4、主要分割方案说明--深入了解 QNX 分割方案(Description of Major Carveouts – Deep Dive on QNX Carveouts)5、配置内存分区大小(Configure Memory Pa…