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

快慢指针巧解链表中间结点

今天我们学习的是力扣上第876道算法题:链表的中间结点。小编依旧会以图文并茂的方式来进行讲解。这道算法题会用到一个特别神奇的算法思想:快慢指针法。希望能给大家带来一些收获。

一、原题重现

这道算法题描述的也非常简单就是找中间那个结点。分两种情况如果结点个数是单数就直接找中间的那个就行,如果是双数就找第二个中间结点。接下来小编会依次为大家讲解。

二、快慢指针

在文章开头小编提到了快慢指针这个算法思想,小编简单的为大家介绍一下。快慢指针顾名思义就是有两个指针:一个跑的快,一个跑的慢。

快指针一下子跑两个结点 慢指针一下子就跑一个指点。为什么要这么去使用呢 ?我们从题里面去慢慢领悟。

三、题目讲解

我们先来看第一种情况 有奇数个结点。

这里我们定义两个指针 一个快指针(fast) 一个慢指针(slow)。起始时让他们都指向头结点,接下来就让他们循环走下去就好。

走到这里相信大家已经发现了当fast->next指针等于NULL时 low指针恰好就停在我们想要的中间指针这个位置。 此时我们只要返回low指针就好啦。 接下来我们模拟实现有偶数个结点的情况。

相同的部分小编就不一一介绍啦。唯一需要特别强调的是看fast指针走到5的这个时候,此时fast->next指针就不等于NULL.如果fast指针再走两步是不是就越过6跳到6后面的那个结点了。

此时我们只要把fast指针设成空指针 low指针就能恰好到我们想要的位置。

到这里我们已经将两种情况都已经分析完了,循环条件我们也分析出来了只要fast&&fast->next二者都不为NULL就继续循环 有一个为NULL就停止循环。

四、代码展示

/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ typedef struct ListNode ListNode; struct ListNode* middleNode(struct ListNode* head) { ListNode*fast=head; ListNode*low=head; while(fast&&fast->next) { fast=fast->next->next; low=low->next; } return low; }

此次的分享就到此结束啦。希望大家都能掌握快慢指针这个算法,未来的算法题还会用上。希望能给大家带来一些启发~

http://www.jsqmd.com/news/1218626/

相关文章:

  • Unity游戏模组框架BepInEx:从原理到实战的完整安装与配置指南
  • 反复过敏性鼻炎调理成健康消费新热点 牛初乳免疫补充路径引行业关注
  • 2026广元卫生间防水、外墙、地下室、楼顶渗漏、阳光房防水 选对服务商,售后无忧,告别房屋渗漏(一次维修,售后无忧) - 企业资讯
  • 嵌入式图像处理与GPU架构:TI OMAP平台ISP与SGX硬件配置实战
  • Windows任务栏透明美化终极指南:3种安装方式+5大效果模式全解析
  • Cordova跨平台开发:调试优化与发布全攻略
  • AM62L DDR控制器深度解析:模式寄存器与动态频率切换实战指南
  • Android Socket编程实战:TCP/UDP实现与优化
  • Objective-C中使用Protocol Buffers实现高效通信
  • 从零搭建压力测试监控环境:JMeter与Prometheus+Grafana实战指南
  • 嵌入式PRCM模块编程:从唤醒事件到电压控制的低功耗管理实践
  • TI高速USB OTG控制器高带宽同步传输与精细功耗管理实战
  • ARM嵌入式开发:从GPIO到国密算法的实践指南
  • 中山火炬DHL/FedEx/UPS国际快递代理哪家好13500091568 - 烟雾弥漫L
  • 电商可以没有专职运营,但不能没有一套进销存管住多平台库存——杭州服务商一线复盘
  • Selenium XPath元素定位:从原理到实战的完整指南
  • Fay与UE5超写实数字人开发:从AI驱动到实时渲染全链路实战
  • Linux服务器运维实战:从环境配置到自动化部署完整指南
  • 好心情:靠谱的恋爱关系修复心理教育机构
  • AM62L调试子系统ROM表手动入口寄存器配置与实战解析
  • 研发项目管理系统任务书
  • AM62L FSS模块ECC与OSPI寄存器配置与调试实战指南
  • 机器学习模型生产化落地:从Notebook到K8s的全链路工程实践
  • 前端水印技术实现与防护全解析
  • 深入解析AM62L调试子系统:ROM表、APBAP与AXIAP实战指南
  • 在广西,一个普通打工人想学AI漫剧的清醒时刻
  • 3秒获取百度网盘提取码:智能查询工具终极指南
  • Vue.js v-model 双向绑定原理与实战应用
  • 嵌入式系统PRCM编程实战:时钟、电源与复位寄存器深度解析
  • Unity URP半透明渲染深度解析:双面渲染与深度写入优化实战