【手撕OJ题】——876. 链表的中间结点

【单链表】OJ题 利用一前一后双指针,后一个结点指向前一个结点,而后两个结点都各自变成下一个结点。遍历完链表后,原链表的尾结点就会变成新链表的头结点。用两个指针一起遍历链表。一个一次走一步,另一个一次走两步。那么当走两步的指针到达链表的末尾时,走一步的指针必然位于中间。可以创建哨兵结点遍历链表,如果发现结点指向的下一个结点数据等于目标数据,则可以跳过下个结点直接指向下下个结点。先遍历链表,统计链表中结点的总数count,再减去k,输出(第count-k)个结点数据。需要注意当k比count大时,输出空链表。...... 阅读详情

🕒 题目

🔎 876. 链表的中间结点【难度:简单🟢】
给你单链表的头节点 head ,请你找出并返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。

  • 示例 1:
    在这里插入图片描述

输入:head = [1,2,3,4,5]
输出:[3,4,5]
解释:链表只有一个中间结点,值为 3 。

  • 示例 2:
    在这里插入图片描述

输入:head = [1,2,3,4,5,6]
输出:[4,5,6]
解释:该链表有两个中间结点,值分别为 3 和 4 ,返回第二个结点。

提示:

  • 链表的结点数范围是 [1, 100]
  • 1 <= Node.val <= 100

⌛ 方法① - 直接遍历

💡 思路:遍历两遍数组,第一遍求出链表长度,第二步找出链表的中间节点并返回。

代码实现如下:

struct ListNode* middleNode(struct ListNode* head){
    struct ListNode* cur = head;
    int count = 0;
    
	// 第一次遍历:计算链表长度
    while(cur)
    {
        count++;
        cur = cur->next;
    }

	// 计算中间节点的位置
    cur = head;
    count /= 2;

	// 第二次遍历:找到中间节点
    while(count--)
    {
        cur = cur->next;
    }
    return cur;
}

⌛ 方法② - 快慢指针

💡 思路:一次遍历即可找到中间节点。定义两个指针 fast 和 slow,slow指针每次移动一步,而fast指针每次移动两步。
当链表长度为奇数,fast到达链表末尾时(即fast->next == NULL)时,slow 为中间节点;当链表长度为偶数,fast == NULL 时,slow 为中间节点。

在这里插入图片描述

struct ListNode* middleNode(struct ListNode* head){
    struct ListNode* slow, *fast;
    slow = fast = head;
    //注意:while条件中fast一定要写前面,否则偶数个时fast->next会造成空指针解引用
    while(fast && fast->next)  //节点是奇数还是偶数未知
    {
        slow = slow->next;
        fast = fast->next->next;
    }
    return slow;
}

❗ 转载请注明出处
作者:HinsCoder
博客链接:🔎 作者博客主页

从零构建FOC:手把手教你实现无刷电机磁场定向控制 本文是一份详尽的FOC(磁场定向控制)实战教程,指导开发者从零开始构建无刷电机驱动系统。文章深入解析了FOC的核心算法,包括坐标变换(Clarke/Park)、SVPWM调制和双环PI控制,并对比了有感与无感方案的实现差异。通过分步调试指南,帮助读者亲手实现稳定、高效的无刷电机控制,彻底掌握其底层原理。 阅读详情

相关推荐

[ESP32]:基于esp-modbus实现serial主机

[ESP32]:基于esp-modbus实现serial主机

LINKKEEE的博客 2567

【链表OJ 3】链表的中间结点

【链表OJ 3】链表的中间结点,数据结构刷题,用c语言实现,动图解析。

weixin_65186652的博客 1885

HyperLedger Fabric实战(一):基础环境构建

简介 本文将介绍从一台裸机上面如何构建出一个可用的Fabric网络(单机版,非测试网络)。 基础环境构建 Fabric组件安装

yindarui 1万+

【每日OJ题 —— 876. 链表的中间结点(链表)】

每日OJ题 —— 876. 链表的中间结点(链表)

qq_73900397的博客 362

AI视频生成提示词工程:结构化公式与实战案例详解

在实际使用 AI 生成视频或图像时,最常遇到的困惑是:为什么我的提示词(Prompt)生成的画面总是不理想?是模型能力不足,还是我的描述有问题?答案往往是后者。提示词工程(Prompt Engineering)并非简单的“翻译”需求,而是一门需要结构化思维和精准描述的技能。它决定了 AI 能否准确理解你的意图,并生成符合预期的视觉内容。 本文将通过两个核心案例,深入拆解提示词的构建逻辑。第一个案例聚焦于“文生视频”,我们将学习如何将一个简单的想法,如“小猫在雪地里玩雪球”,通过结构化公式扩展为一段富有细节和

weixin_30800987的博客 557

详解STM32F407双重ADC同步采集与DMA传输的配置技巧及实战应用

本文详细解析了STM32F407双重ADC同步采集与DMA传输的配置技巧及实战应用。通过CubeMX配置、代码实现和常见问题解决方案,帮助开发者高效实现多通道数据同步采集,提升工业自动化和嵌入式系统的数据采集效率与精度。

ii567的博客 364

数据结构与算法——链表OJ题详解(1)

暴揍数据结构——单链表OJ(第一期).Up带你抽丝剥茧。

yang_xinxim的博客 1352

AMSR-2数据下载实战:从JAXA到LPRM的算法选择与效率优化

本文详细介绍了AMSR-2数据的下载实战,重点对比了JAXA与LPRM算法的差异及适用场景,并提供了高效下载方案和网络优化策略。通过实际案例和代码示例,帮助用户快速获取和处理AMSR-2数据,提升研究效率。

rl6adventurer的博客 691

单链表OJ思路

11道单链表OJ题的解题思路。

x_p96484685433的博客 981

告别卡顿闪烁!在Cesium 1.134中集成SOG格式,让400万高斯秒级加载

本文详细介绍了如何在Cesium 1.134中集成SOG格式,实现400万高斯数据的秒级加载,解决传统加载方式导致的卡顿和闪烁问题。通过空间索引重构、属性量化编码和WebGPU原生支持等技术,SOG格式显著提升了三维地理空间可视化的性能。文章还提供了环境准备、模型转换和Cesium集成的实战指南,帮助开发者高效优化项目。

weixin_29313817的博客 498

ESP32-C3模组上跑通HTTPS分次传输文件(1)

ESP32-C3模组上跑通HTTPS分次传输文件(1)

phmatthaus的专栏 760

链表的经典算法OJ题

好了,今天关于顺序表的两道OJ题的分享就到这里了在学习编程的道路上Humble与各位同行,加油吧各位!让我们在接下来的时间里一起成长,一起进步吧!

2301_79345909的博客 1124

基于NSGA2算法的无人机三维路径规划MATLAB实现

传统的路径规划方法多采用启发式搜索算法,然而这些方法往往带着局限性,不能有效地克服无人机飞行任务中所遇到的复杂环境与约束。而基于遗传算法的NSGA2(Non-dominated Sorting Genetic Algorithm II)方法则可以在优化目标之间找到最好的平衡点,是一种十分优秀的解决方案。本文介绍了基于NSGA2算法的无人机三维路径规划MATLAB实现。NSGA2算法是一种多目标优化算法,通过非支配排序和拥挤度距离来评估个体的适应度和选择新个体,从而产生一组非支配解。3.选择新个体组成P1;

CyberLynxX的博客 982

数据结构——图解链表OJ题目

学完了单链表之后,我们对其基本结构已经有了一定的了解,接下来我们通过一些题目强化对链表的理解,同时学习一些面试笔试题目的新思路以及加强对数据结构单链表的掌握。

weixin_61194651的博客 1671

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

单链表OJ题:LeetCode--876.链表的中间结点

LeetCode--876.链表的中间结点:详细解题过程以及图解和完整代码。

Yikefore的博客 391

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

链表相关OJ题

思路:创建一个哨兵位指向head,创建一个cur临时指针,遍历链表,遇到等于val的节点跳过即可,最后返回即链表的头节点创建一个哨兵位就避免了讨论head是否为空。

Vect__的博客 1322

十道OJ题帮你深入认识链表

OJ题目+详细的证明

go_bai的博客 1266

OJ08题:876. 链表的中间结点

过程简单,这题主要在于我们怎样让循环停下来,我们来分析一下:我们先来看一下有奇数个节点:我们可以看到,当slow指向中间节点的时候fast->next = NULL,这时候循环结束有偶数个节点:这个时候当slow指向中间节点的时候,fast指向NULL;对这两种情况分析我们知道,当fast指向NULL或fast->next=NULL时,循环结束,此时,slow指向的节点为中间节点,

吴先生的博客 484

链表的中间结点数据结构oj题(力扣876)

快慢指针就是一个fast指针每次走两步,另一个low指针每次走一步,等fast出界时,low就是中间指针。先计算内部有多少个节点,然后进行除以二,得到中间节点数后,进行遍历到对应的中间节点。(本人有点笨,只能想到这种方法了)。通过向大佬学习,我发现一个更加好用的方法,,请你找出并返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。,这个方法是个好方法思路简单,代码也好写,就是难想出来哈哈哈。原理就是通过1/2总长度。,对于我来说一开始想到的。

努力学习C++的熊大(保护森林版) 537

链表OJ经典题浅刷< 1 >(看完不再害怕链表题)

一 移除链表元素 原题链接:203. 移除链表元素 - 力扣(LeetCode) (leetcode-cn.com) 思路:我们可以创建一个指针变量cur来遍历链表,当cur->val==val时,我们就需要删除此结点,但链表是连续的,free结点的同时还需要保留上一个结点的地址,所以我们用指针变量prev来保存上一个结点的地址,同时我们做这道题也要考虑到特殊情况,比如头结点就是所要删除的结点,以及链表中间有好几个结点都是需要删除的结点。 错误代码: struct ListNo..

weixin_60718941的博客 2785

[数据结构]链表OJ题 (三) 链表的中间结点、链表中倒数第k个结点、合并两个有序链表、链表分割、链表的回文结构

链表相关OJ题,帮助更好的理解链表。

qq_59456417的博客 1069

【数据结构与算法篇】单链表及相关OJ算法题

【数据结构与算法篇】单链表及相关OJ算法题

2301_78022459的博客 1074

【数据结构】面试OJ题—链表

将没走完的链表直接尾插到新链表后即可;将小的结点尾插到新链表中。

m0_67367079的博客 1329

oj题 ——— 单链表oj题

本文总结了单链表常见OJ题的解法,包括移除链表元素、合并有序链表、链表的中间结点、反转链表、删除重复节点等。通过双指针、快慢指针、哨兵节点等技巧,实现高效操作。重点分析了快慢指针找中间节点和环形链表入口的原理,以及深拷贝随机链表的"三步法"。所有解法都注重边界条件处理,时间复杂度O(n),空间复杂度O(1),适合面试和算法学习。

weixin_55341642的博客 1201

【LeetCode】【数据结构】单链表OJ常见题型(一)

欢迎大家📂收藏📂以便未来做题时可以快速找到链表解题思路,巧妙的方法可以事半功倍。

℉f的博客 1548

数据结构 十一道链表相关面试题,牛客 LeetCode,在线OJ题

由于篇幅有限,这里就不一一罗列了,20道常见面试题(含答案)+21条MySQL性能调优经验小编已整理成Word文档或PDF文档还有更多面试复习笔记分享如下《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!十一题 :环形链表 II给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意,

2401_83916030的博客 888

【1024狂欢】力扣经典链表OJ题合集

现在的力扣题的源代码我会全部一并上传至我的码云仓库里面,点我看仓库 首先祝各位程序猿1024狂欢节快乐鸭!这是属于我们的节日 为了致敬1024,今天的力扣系列不再是一题了,而是多个题的组合,帮助 ...

dtxew love c++ 4394
上一篇: 【数据结构详解】——八大排序(收藏版)
下一篇: 【手撕OJ题】——BM8 链表中倒数最后k个结点
HinsCoder
博客等级 码龄5年 1万+粉丝 220原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值