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

2024/9/21 leetcode 19题 24题

目录

19.删除链表中的倒数第n个结点

题目描述

题目链接

解题思路与代码

24.两两交换链表中的结点

题目描述

题目链接

解题思路与代码


==================================================

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]

提示:

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

题目链接

19.删除链表中的倒数第n个结点

解题思路与代码

就看这个例子,n = 2,

我们思路就是通过一个nhead虚拟头节点,然后定义left和right两个指针来求解。

假设链表一共m个结点,然后删除倒数第n个结点。

先让right 向右移动n个结点

然后让left和right同步移动

然后此时我们发现left->next就是要删除的结点,然后我们直接left->next = left->next ->next;

就可以求解,同时我们需要注意,需要对left->next进行delete操作,防止链表中只存在一个结点的情况。nhead->next就是我们最后返回结果。

这个方法原理就是,先然right移动n,那么之后left和right同步移动,相当于移动(m - n)次,这样left就处于了我们要删除节点的前一个结点,从而简化问题。

(c++代码)

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* removeNthFromEnd(ListNode* head, int n) {ListNode* nhead = new ListNode(0);nhead ->next = head;ListNode* left = nhead;ListNode* right = nhead;while( n -- ) {right = right ->next;}while(right != NULL && right ->next != NULL) {left = left->next;right = right ->next;}ListNode* tem = left ->next;left->next = left->next->next;delete(tem);return nhead ->next;}
};

24.两两交换链表中的结点

题目描述

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。

示例 1:

输入:head = [1,2,3,4]
输出:[2,1,4,3]

示例 2:

输入:head = []
输出:[]

示例 3:

输入:head = [1]
输出:[1]

提示:

  • 链表中节点的数目在范围 [0, 100] 内
  • 0 <= Node.val <= 100

题目链接

24.两两交换链表中的结点

解题思路与代码

本题就是交换相邻结点,然后我们还是创立一个虚拟头节点pre ,然后我们使用cur进行遍历。

一次交换

二次交换

最终返回pre ->next即可

(c++ 代码)

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* swapPairs(ListNode* head) {ListNode* nhead = new ListNode();nhead ->next = head;ListNode* cur = nhead;while( cur ->next != NULL && cur ->next ->next != NULL) {ListNode* start = cur ->next;ListNode* end = cur ->next ->next;cur ->next = end;start ->next = end ->next;end ->next = start;cur = start;}return nhead ->next;}
};

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 线性规划------ + 案例 + Python源码求解(见文中)
  • C++类和对象(4)
  • ElementUI 快速入门:使用 Vue 脚手架搭建项目
  • springboot注册和注入组件方式概览
  • Flutter 约束布局
  • unix中的进程标识以及使用场景
  • Unity数据持久化4——2进制
  • 【CSS in Depth 2 精译_031】5.3 Grid 网格布局的两种替代语法
  • cpp中的namespace详解
  • 【C++】list详解及模拟实现
  • 软RAID查看状态mdstat的原理
  • 跨越数据孤岛:打造支持多种数据库的Java智能查询引擎及其商业前景
  • C# winforms DataGridView设置数据源自动显示表格
  • JAVA基础:Lock锁
  • imo云办公室 Imo_DownLoadUI.php 任意文件下载漏洞复现
  • [case10]使用RSQL实现端到端的动态查询
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • android 一些 utils
  • Docker: 容器互访的三种方式
  • JavaScript HTML DOM
  • JavaScript设计模式与开发实践系列之策略模式
  • node学习系列之简单文件上传
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • v-if和v-for连用出现的问题
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 大主子表关联的性能优化方法
  • 浮现式设计
  • 给第三方使用接口的 URL 签名实现
  • 诡异!React stopPropagation失灵
  • 简单实现一个textarea自适应高度
  • 前端js -- this指向总结。
  • 如何使用 JavaScript 解析 URL
  • 如何用vue打造一个移动端音乐播放器
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • ​iOS安全加固方法及实现
  • #pragma 指令
  • #ubuntu# #git# repository git config --global --add safe.directory
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (C语言)二分查找 超详细
  • (Matlab)使用竞争神经网络实现数据聚类
  • (九)One-Wire总线-DS18B20
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (三)elasticsearch 源码之启动流程分析
  • (十五)使用Nexus创建Maven私服
  • (转)ABI是什么
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .NET6 命令行启动及发布单个Exe文件