【Leetcode -19.删除链表的倒数第N个结点 -24.两两交换链表中的节点】

news2024/11/15 22:57:23

Leetcode

  • Leetcode -19.删除链表的倒数第N个结点
  • Leetcode - 24.两两交换链表中的节点

Leetcode -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]

我们的思路是,创建一个哨兵位,使用快慢指针,快指针从head开始走,慢指针从哨兵位开始走,快指针先走n步,加上哨兵位,和慢指针拉开n+1步,这样才可以使要删除的结点的上一个结点直接指向要删除的结点的下一个结点,即删除倒数第n个节点;

		struct ListNode* removeNthFromEnd(struct ListNode* head, int n)
		{
		    //创建一个哨兵位,它的next是head
		    struct ListNode* p = malloc(sizeof(struct ListNode));
		    p->val = 0;
		    p->next = head;
		
		    //fast从头结点开始,slow从哨兵位开始
		    //fast和slow拉开n个距离,加上哨兵位,实际上是n+1个距离
		    //这样才可以使要删除的结点的上一个结点直接指向要删除的结点的下一个结点
		    struct ListNode* fast = head, * slow = p;
		    for (int i = 0; i < n; i++)
		    {
		        if (fast == NULL)
		        {
		            return NULL;
		        }
		        fast = fast->next;
		    }
		
		    //然后fast和slow同时走,当fast为空,slow的next就是要删除的结点
		    while (fast)
		    {
		        slow = slow->next;
		        fast = fast->next;
		    }
		
		    //更新slow即可
		    slow->next = slow->next->next;
		
		    //需要返回哨兵位的next,因为如果要删除的结点是头结点,返回头结点就不行
		    struct ListNode* curr = p->next;
		    free(p);
		
		    return curr;
		}

Leetcode - 24.两两交换链表中的节点

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

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

示例 2:
输入:head = []
输出:[]

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

我们的思路是,在交换两个节点前设定一个节点curr,每次curr后面的两个节点交换;

初始定义:
在这里插入图片描述

第一次交换:
在这里插入图片描述

更新curr:
在这里插入图片描述

上图之后再次进入循环,node1和node2继续迭代:

在这里插入图片描述

后面的图省略,代码如下:

		struct ListNode* swapPairs(struct ListNode* head)
		{
		    //创建一个哨兵位
		    struct ListNode* dummyHead = malloc(sizeof(struct ListNode));
		    dummyHead->val = 0;
		    dummyHead->next = head;
		
		    //curr从哨兵位开始
		    struct ListNode* curr = dummyHead;
		
		    //每次交换的是curr的后两个节点
		    while (curr->next && curr->next->next)
		    {
		        struct ListNode* node1 = curr->next;
		        struct ListNode* node2 = curr->next->next;
		
		        curr->next = node2;
		        node1->next = node2->next;
		        node2->next = node1;
		
		        //更新curr
		        curr = node1;
		    }
		
		    head = dummyHead->next;
		    free(dummyHead);
		    return head;
		}

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

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

相关文章

软件测试人员在工作中如何运用Linux

从事过软件测试的小伙们就会明白会使用Linux是多么重要的一件事&#xff0c;工作时需要用到&#xff0c;面试时会被问到&#xff0c;简历中需要写到。 对于软件测试人员来说&#xff0c;不需要你多么熟练使用Linux所有命令&#xff0c;也不需要你对Linux系统完全了解&#xff…

vue总线bus的使用和移除注意事项

vue总线bus的使用和移除注意事项 本文目录 vue总线bus的使用和移除注意事项初始化并封装发送事件接收事件移除事件监听实际使用正确测试效果错误测试效果 初始化并封装 在main.js中对bus进行初始化&#xff0c; Bus是一个不具备 DOM 的组件&#xff0c;它具有的仅仅只是它实例…

算法 | 最长回文子串

思路&#xff1a;遍历字符串&#xff0c;对于字符串的每个字符&#xff0c;维持两个游标&#xff08;left&#xff0c;right&#xff09;&#xff0c;找到游标对应字符相等时就同速度向两边扩散。 对于 奇数长度子串&#xff0c;left right 对于偶数成都子串&#xff0c;lef…

RocketMq消息

消息发送 发送同步消息 public class SyncProducer {public static void main(String[] args) throws Exception{DefaultMQProducer producernew DefaultMQProducer(/*please_rename_unique_group_name*/"group1");producer.setNamesrvAddr("localhost:9876&q…

复现Nginx 解析漏洞

目录 漏洞原理 漏洞复现 编译环境 制作图片马 一&#xff1a;随便弄一张图片 二&#xff1a;准备写一个.php文件&#xff0c;写上木马 三&#xff1a;合成图片马 上传图片马 修复漏洞 漏洞原理 1、 由于nginx.conf的如下配置导致nginx把以’.php’结尾的文件交给fast…

一篇文章告诉你金融行业如何高效管理文件

由于金融行业的行业属性&#xff0c;信息安全万分重要。因此在文件管理工具时&#xff0c;要注意数据安全问题&#xff0c;那么金融行业如何高效管理文件呢&#xff1f; 首先金融行业在文件管理时可能面临以下问题&#xff1a; 1&#xff0c;资料繁杂&#xff0c;整理困难&…

Unity Camera -- (3)控制相机能看到的东西

使用剪裁平面&#xff08;Clipping Planes&#xff09;定义相机可视范围 Clipping Planes定义了相机所能看到的场景范围。在有些时候&#xff0c;限制相机所能看到的范围是出于风格上的考量&#xff0c;但编辑Clipping Planes的主要目的是为了优化性能。相机所需要渲染的东西越…

什么是低码平台?低代码平台能解决什么问题?

低代码平台是近年来日益流行的一种新型软件开发工具。它们提供了一种更简单、更快速、更具成本效益的方式来构建和部署定制软件应用程序。在本文中&#xff0c;我们将探讨什么是低码平台&#xff0c;它们可以解决什么问题&#xff0c;以及它们为什么变得如此流行。 一、什么是低…

第十六章 命令模式

文章目录 前言一、命令模式解决智能生活项目设计思想完整代码Command 所有命令的父接口&#xff08;绑定命令都需要实现&#xff09;LightReceiver 命令接受者LightOnCommand / LightOffCommand 将具体的命令进行绑定空命令命令调用者Clint 测试 添加新的命令&#xff0c;非常简…

【信息安全案例】——身份与访问安全(学习笔记)

&#x1f4d6; 前言&#xff1a;一位用户对计算机信息资源的访问活动中&#xff0c;首先必须拥有身份标识&#xff0c;通过该标识鉴别该用户的身份&#xff0c;进一步地&#xff0c;用户还应当具有执行所请求动作的必要权限&#xff0c;系统会验证并控制其能否执行对资源试图完…

Human Pose Regression with Residual Log-likelihood Estimation

Abstract 通过似然热图对输出分布进行建模的基于热图的方法在人体姿态估计领域占据主导地位。相比之下&#xff0c;基于回归的方法更有效&#xff0c;但效果较差。 在这项工作中&#xff0c;我们探索了最大似然估计&#xff08;MLE&#xff09;&#xff0c;以开发一种高效有…

基于朴素贝叶斯的垃圾邮件分类系统项目开发教程

项目资源下载 基于朴素贝叶斯的垃圾邮件分类系统源码 项目简介 本项目基于朴素贝叶斯算法来解决垃圾邮件分类问题&#xff0c;并使用混淆矩阵进行了验证&#xff0c;得到了非常好的准确率和召回率&#xff08;96%和97%&#xff09;。此外还开发了一个可视化的垃圾邮件分类系统…

前端通过ajax上传文件到七牛云

1. 从服务端获取七牛云上传的token,生成token参考官方文档https://developer.qiniu.com/kodo/1208/upload-token 2. 在七牛云文档查找上传的存储区域 https://developer.qiniu.com/kodo/1671/region-endpoint-fq 在七牛云控制台找到空间管理的cdn加速域名https://portal.qiniu…

【Thinkphp 6】框架基础知识

文章目录 环境搭建框架基础规则继承引入单应用模式多应用模式自定义路由调试器空控制器 视图模板引擎安装渲染模板facade代理变量传递view.php语法查看编译后的文件默认值数组按键取值md5加密 请求request信息参数接收生成URL 文件上传上传及验证 验证功能验证器表单令牌 中间件…

android不可不知调试技巧

目录 1、条件断点 2、评估表达式&#xff08;Evaluate Expression&#xff09; 3、日志断点 4、方法断点 5、异常断点 6、Field WatchPoint 1、条件断点 假设我们列表循环的某个元素时候才暂停&#xff0c;就用这种方式。具体方式在循环列表打断点&#xff0c;对着断点右…

Nginx简介和快速入门

前言: 在一个小型的个人博客网站中&#xff0c;因为没什么流量&#xff0c;并发量小&#xff0c;一般可以直接在一个服务器上的tomcat中直接运行jar包.由tomcat直接响应给客户。 到后面之后随着流量的增大&#xff0c;一台服务器的资源不够用了&#xff0c;此时就需要再多开一…

浏览器渲染页面的原理及流程

1、渲染引擎首先通过网络获得所请求文档的内容 2、解析HTML文件&#xff0c;构建 DOM Tree 3、解析CSS&#xff0c;构建 CSSOM Tree(CSS规则树) 4、将 DOM Tree 和 CSSOM Tree合并&#xff0c;构建Render tree(渲染树) 5、reflow(重排、回流)&#xff1a;根据Render tree进行节…

功率器件的仿真评估

功率器件的仿真评估 1.功率器件仿真评估概述2.IGBT温升模型整理3.Matlab仿真计算4.仿真评估报告 1.功率器件仿真评估概述 功率器件的仿真评估共五个步骤&#xff1a; a.根据IGBT数据手册整理中热阻参数、开关损耗参数温升模型&#xff1b; b.带入到Matlab中仿真堵转、中速运行…

一键免费部署你的私人 ChatGPT 网页应用

主要功能 在 1 分钟内使用 Vercel &#xff08;https://vercel.com/&#xff09;免费一键部署精心设计的 UI&#xff0c;响应式设计&#xff0c;支持深色模式极快的首屏加载速度&#xff08;~100kb&#xff09;海量的内置 prompt 列表&#xff0c;来自中文和英文自动压缩上下文…

CUDA下载,以及下载GPU版本的pytorch

一、下载anaconda 因为这步我之前就下好了&#xff0c;主要参考这个链接&#xff1a;史上最全最详细的Anaconda安装教程 二、下载CUDA 1.首先观察自己需要什么版本的CUDA&#xff0c;以及是否安装过CUDA 先cmd&#xff0c;输入命令 nvidia-smi结果如下&#xff0c;所以我们…