当前位置: 首页 > news >正文

力扣 19题 删除链表的倒数第 N 个结点 记录

题目描述

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

思路

使用双指针方法,遍历一词链表就可以完成任务

  1. 定义两个指针fast和slow都指向头节点。
  2. 先让fast指针移动n+1次,这样fast和slow之间就有n+1个节点的间隔。
  3. 然后同时移动fast和slow指针,直到fast指向链表的最后一个节点。这时,slow指针将指向要删除节点的前一个节点。
  4. 修改slow的next指针,让其跳过下一个节点(即要删除的节点)。
  5. 返回链表的头节点。

完整代码

#include<iostream>
#include<vector>
using namespace std;struct ListNode {int val;ListNode *next;ListNode(int x) : val(x), next(nullptr) {}
};class Solution {
public:ListNode* removeNthFromEnd(ListNode* head, int n) {ListNode dummyHead(0);dummyHead.next = head;ListNode *fast = &dummyHead;ListNode *slow = &dummyHead;while(n-- && fast->next != nullptr){fast = fast->next; }fast = fast->next; // 再向前移动一位while(fast != nullptr){fast = fast->next;slow = slow->next;}slow->next = slow->next->next;return dummyHead.next;}
};int main()
{Solution s;ListNode *head = new ListNode(1); // 创建一个新的链表节点,节点的值为1ListNode *current = head; // 创建指针指向链表头节点vector<int> values = {2, 3, 4, 5};for (int value : values) {current->next = new ListNode(value);current = current->next;}head = s.removeNthFromEnd(head, 2);// 打印删除节点后的链表current = head;while(current != nullptr){cout << current->val << " ";current = current->next;}return 0;
}
http://www.lryc.cn/news/361201.html

相关文章:

  • 渗透测试之Web安全系列教程(二)
  • 【算法】在?复习一下快速排序?
  • matlab安装及破解
  • Tree——输出项目的文件结构(Linux)
  • UE5 读取本地图片并转换为base64字符串
  • 【NOIP普及组】税收与补贴问题
  • Docker 部署 mysql 服务
  • 01- Redis 中的 String 数据类型和应用场景
  • Android音频焦点
  • Docker安全配置
  • 文件上传之使用一个属性接收多个文件
  • chat4-Server端保存聊天消息到mysql
  • vivo鄢楠:基于OceanBase 的降本增效实践
  • arm cortex-m架构 SVC指令详解以及其在freertos的应用
  • k8s笔记——kubernetes中的三种IP
  • Golang | Leetcode Golang题解之第127题单词接龙
  • 微服务中feign远程调用相关的各种超时问题
  • springboot整合chatgpt,并且让其可以记录上下文
  • CTP前端:解码数字世界的魔法师
  • rabbitmq的交换机类型以及他们的区别
  • 理解不同层的表示(layer representations)
  • 原生js访问http获取数据的方法
  • Windows 2000 Server:安全配置终极指南
  • 基于 FastAI 文本迁移学习的情感分类(93%+Accuracy)
  • 集成Google Authenticator实现多因素认证(MFA)
  • 网关(Gateway)- 自定义过滤器工厂
  • HTML静态网页成品作业(HTML+CSS)—— 香奈儿香水介绍网页(1个页面)
  • C++11 lambda表达式和包装器
  • 3. MySQL 数据表的基本操作
  • Linux命令篇(一):文件管理部分