C语言每日一题:9.《数据结构》链表的中间节点+链表的倒数第k个节点。

第一题:

请添加图片描述
题目链接:

>思路一:

1.第一遍遍历链表,直到找到尾结束第一次遍历,遍历的过程中记录链表长度。定义长度为k。
2.确定中间是第几个节点,计算是k/2+1根据题目要求。
3.再一次去遍历我们的数组,找到中间节点,返回节点。

>思路二:

使用了一个快慢指针的思想。
1.定义一个慢指针和一个快指针。
2.v快=2v慢,同起到,时间时间是时刻相同。
3.x快=2x慢。当快指针走到尾的时候慢指针才走到中间。

struct ListNode* middleNode(struct ListNode* head){struct ListNode* quic=head,*slow=head;//判断奇数,判断偶数.两个条件满足一个就结束。while((quic) && (quic->next)){slow=slow->next;quic=quic->next->next;}return slow;
}

第二题:

请添加图片描述
题目链接:

>思路一

1.第一遍遍历链表,直到找到尾结束第一次遍历,遍历的过程中记录链表长度。定义长度为n
2.确定倒数第k个是正数第n-k个
3.再一次去遍历我们的数组,找到倒数第k个,返回节点。

>思路二

1.相对距离的使用,定义一个前面的指针和后指针,初始都是在头节点。
2.先循环遍历后指针k让后指针向后移动k次,前后指针再用相同的速度向后同时移动,当后指针为空时就结束,这个时候的前指针就是倒数第k个节点。
请添加图片描述
3.特殊情况:
1.一共k个节点倒数第k个就是第一个节点。循环结束n1,ffastNULL;判断n1返回头就可以。
2.节点为空,链表没有数据直接返回空在开始就判断。
3,n
0和fast!=NULL,说明我们的接下来的双指针移动没有问题可以正常进行。

struct ListNode* FindKthToTail(struct ListNode* pListHead, int k ) {// write code here//对于一个链表来说应该开始就判断是否为空链表。if(pListHead==NULL){return NULL;}struct ListNode* fast=pListHead,*slow=pListHead;int n=k;//位置差搞出来while(n&&fast->next!=NULL){fast=fast->next;n--;}//一共只有k个节点的情况,倒数第k个就是头if(n==1){return pListHead;}//循环找第k个节点的时候没有超出链表的范围,前后的指针都是正常的。if(n==0){while(fast!=NULL){slow=slow->next;fast=fast->next;}return slow;}return NULL;
}

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

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

相关文章

实战!聊聊工作中使用了哪些设计模式

实战!聊聊工作中使用了哪些设计模式 策略模式 业务场景 假设有这样的业务场景,大数据系统把文件推送过来,根据不同类型采取不同的解析方式。多数的小伙伴就会写出以下的代码: if(type"A"){//按照A格式解析}else if(t…

Electron逆向调试

复杂程序处理方式: 复杂方式通过 调用窗口 添加命令行参数 启动允许调用,就可以实现调试发布环境的electron程序。 断点调试分析程序的走向,程序基本上会有混淆代码处理, 需要调整代码格式,处理程序。

建木-自动化部署-dockerfile文件书写-自动化部署jar包完成docker运行镜像-dockerfile书写介绍

阿丹: 在自动化部署的时候jar包要如何进行部署。就需要通过使用书写dockerfile文件来进行触发的时候执行docker指令来完成镜像的部署以及运行。 什么是dockerFile dockerfile是自定义镜像的一套规则dockerfie由多条指令构成,Dockerfile中的每一条指令都…

基于 Docker 的深度学习环境:Windows 篇

本篇文章,我们聊聊如何在 Windows 环境下使用 Docker 作为深度学习环境,以及快速运行 SDXL 1.0 正式版,可能是目前网上比较简单的 Docker、WSL2 配置教程啦。 写在前面 早些时候,写过一篇《基于 Docker 的深度学习环境&#xff…

spring注解驱动开发(一)

Spring常用注解&#xff08;绝对经典&#xff09; 1、需要导入的spring框架的依赖 <dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.3.12.RELEASE</version></dependenc…

Spring源码(二)Spring底层架构核心概念解析

1、BeanDefinition BeanDefinition表示Bean定义&#xff0c;BeanDefinition中存在很多属性用来描述一个Bean的特点。比如&#xff1a; class&#xff0c;表示Bean类型scope&#xff0c;表示Bean作用域&#xff0c;单例或原型等lazyInit&#xff1a;表示Bean是否是懒加载initM…

Hbase基础概念

HBase 一、HBase的数据模型1.HBase数据存储结构2.HBase存储概念3.HBase基本架构 二、HBase Shell1.DDL(Data Definition Language)1.namespace2.table 2.DML&#xff08;Data Manipulation Language&#xff09;1.写入数据2.读取数据3.删除数据 三、HBase组成架构1. Master架构…

STM32 CubeMX 定时器(普通模式和PWM模式)

STM32 CubeMX STM32 CubeMX 定时器&#xff08;普通模式和PWM模式&#xff09; STM32 CubeMXSTM32 CubeMX 普通模式一、STM32 CubeMX 设置二、代码部分STM32 CubeMX PWM模式一、STM32 CubeMX 设置二、代码部分总结 STM32 CubeMX 普通模式 一、STM32 CubeMX 设置 二、代码部分 …

使用Pytest生成HTML测试报告

背景 最近开发有关业务场景的功能时&#xff0c;涉及的API接口比较多&#xff0c;需要自己模拟多个业务场景的自动化测试&#xff08;暂时不涉及性能测试&#xff09;&#xff0c;并且在每次测试完后能够生成一份测试报告。 考虑到日常使用Python自带的UnitTest&#xff0c;所…

【JVM】详细解析java创建对象的具体流程

目录 一、java创建对象的几种方式 1.1、使用new关键字 1.2、反射创建对象 1.2.1、Class.newInstance创建对象 1.2.2、调用构造器再去创建对象Constructor.newInstance 1.3、clone实现 1.4、反序列化 二、创建对象的过程 2.1、分配空间的方式 1、指针碰撞 2、空闲列表 …

ElementUI 实现动态表单数据校验(已解决)

文章目录 &#x1f34b;前言&#xff1a;&#x1f34d;正文1、探讨需求2、查阅相关文档&#xff08;[element官网](https://element.eleme.cn/#/zh-CN/component/form)&#xff09;官方动态增减表单项示例3、需求完美解决4、注意事项 &#x1f383;专栏分享&#xff1a; &#…

小研究 - 浅析 JVM 中 GC 回收算法与垃圾收集器

本文主要介绍了JVM虚拟机中非常重要的两个部分&#xff0c;GC 回收算法和垃圾收集器。从可回收对象的标记开始&#xff0c;详细介绍 了四个主流的GC算法&#xff0c;详细总结了各自的算法思路及优缺点&#xff0c; 提出了何种情况下应该通常选用哪种算法。 目录 1 标记可回收对…

uniapp项目的pdf文件下载与打开查看

最近写的uniapp项目需要新增一个pdf下载和打开查看功能&#xff0c;摸索了半天终于写了出来&#xff0c;现分享出来供有需要的同行参考&#xff0c;欢迎指正 async function DownloadSignature() {//请求后端接口&#xff0c;返回值为一个url地址let resawait req.flow.flowDo…

【Linux基础】WSL安装Ubuntu

说明 本文使用的Windows环境是Windows 11 专业版。 WSL现在有二代WSL2&#xff0c;后续都通过WSL2来安装Linux&#xff0c;使用的是Ubuntu发行版&#xff0c;版本是20.04。 安装过程使用了PowerShell&#xff0c;且是管理员权限打开的。 参考适用于 Linux 的 Windows 子系统…

多线程面试相关的一些问题

面试题 1. 常见的锁策略相关的面试题 2. CAS相关的面试题 3. Synchronized 原理相关的面试题 4. Callable 接口相关的面试题 1. 常见的锁策略 乐观锁 vs 悲观锁 悲观锁: 总是假设最坏的情况&#xff0c;每次去拿数据的时候都认为别人会修改&#xff0c;所以每次在拿数据的时候都…

【深度学习】生成对抗网络Generative Adversarial Nets

序言 本文是GAN网络的原始论文&#xff0c;发表于2014年&#xff0c;我们知道&#xff0c;对抗网络是深度学习中&#xff0c;CNN基础上的一大进步&#xff1b; 它最大的好处是&#xff0c;让网络摆脱训练成“死模型”到固定场所处去应用&#xff0c;而是对于变化的场景&#xf…

一条sql查询语句在mysql中的执行过程是什么

mysql的连接器 我们想要在mysql中执行一条sql查询语句&#xff0c;首先需要连接到mysql服务&#xff0c;那么客户端首先要向mysql服务端发起连接请求&#xff0c;我们可以在客户端用mysql -h [ip] -P [port] -u 用户名 -p 密码 命令向服务端发起连接请求&#xff0c;这个连接请…

16位S912ZVML32F3MKH、S912ZVML31F1WKF、S912ZVML31F1MKH混合信号MCU,适用于汽车和工业电机控制应用。

S12 MagniV微控制器是易于使用且高度集成的混合信号MCU&#xff0c;非常适合用于汽车和工业应用。S12 MagniV MCU提供单芯片解决方案&#xff0c;是基于成熟的S12技术的完整系统级封装 (SiP) 解决方案&#xff0c;在整个产品组合内软件和工具都兼容。 S12 MagniV系统级封装 (S…

通过IDEA发送QQ邮箱信息

先创建一个普通的Maven项目&#xff0c;我就不演示啦&#xff0c;个人博客已经写过~[创建一个maven项目]。 项目创建成功后&#xff0c;引人Maven依赖&#xff0c;如下: <dependencies><dependency><groupId>org.apache.commons</groupId><artifact…

在k8s集群内搭建Prometheus监控平台

基本架构 Prometheus由SoundCloud发布&#xff0c;是一套由go语言开发的开源的监控&报警&时间序列数据库的组合。 Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态&#xff0c;任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的…