[C题目]力扣876. 链表的中间结点
876. 链表的中间结点 - 力扣(LeetCode)
方法一:计算结点个数count,挪动count/2次就是题目要求的结点。
struct ListNode* middleNode(struct ListNode* head)
{struct ListNode* cur=head;//标记当前结点int count=0;//count记录结点个数while(cur)//计算结点个数{count++;cur=cur->next;}cur=head;//回到头结点for(int i=0;i<(count/2);i++)//循环第一次,cur为第2个结点。第(count/2)+1个结点,需要循环count/2次。{cur=cur->next;}return cur;
}
方法二:快慢指针。slow和fast的起点都是head,slow一次向后挪动一个结点,fast一次向后挪动两个结点。
fast向后挪动两个结点就是被fast->next->next赋值,此前提是fast->next不为NULL,而fast->next不为NULL的前提是fast不为NULL。所以循环判断条件为(fast&&fast->next),并且fast必须写在fast->next的左边,因为当结点个数为偶数时,slow到达中间结点后,fast为NULL,由于逻辑操作符&&会控制表达式求值顺序,fast为NULL则不会执行fast->next造成解引用空指针的错误。
1、当结点个数为奇数时,slow到达中间结点后,fast->next比fast先为NULL。
联想记忆:由于跳第1次,slow会到第2个结点。 那么slow跳第n次到达中间,就会到第n+1个结点,而fast就会跳2n次到达尾结点(第2n+1个结点),fast为尾结点则fast->next自然就是NULL。
2、当结点个数为偶数时,slow到达中间结点后,fast比fast->next先为NULL,slow为第二个中间结点。
struct ListNode* middleNode(struct ListNode* head)
{struct ListNode* fast=head;struct ListNode* slow=head;while(fast&&fast->next){slow=slow->next;fast=fast->next->next;}return slow;
}
[C题目]力扣876. 链表的中间结点相关推荐
- 【LeetCode题目详解】(二)206.反转链表、876.链表的中间结点
目录 一.力扣第206题:反转链表 1.思路一 2.思路二 二.力扣第876题:链表的中间结点 1.思路一 2.思路二 总结 一.力扣第206题:反转链表 题目链接:206. 反转链表 - 力扣(Le ...
- 每日一道leetcode(python)876. 链表的中间结点
每日一道leetcode(python)876. 链表的中间结点 2021-08-19 给定一个头结点为 head 的非空单链表,返回链表的中间结点.如果有两个中间结点,则返回第二个中间结点.示例 1 ...
- LeedCode篇:876. 链表的中间结点
876. 链表的中间结点 题目: 解题思路: 源码 踩坑点: 题目: 解题思路: 因为要找中间节点,所以用快慢指针的方法 源码 struct ListNode* middleNode(struct L ...
- 力扣 删除链表的倒数第N个节点
力扣 删除链表的倒数第N个节点 题目描述 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = ...
- JavaScript——leetcode算法入门876. 链表的中间结点【双指针专题】
题目描述 给定一个头结点为 head 的非空单链表,返回链表的中间结点. 如果有两个中间结点,则返回第二个中间结点. 示例 1: 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式: ...
- LeetCode Algorithm 876. 链表的中间结点
876. 链表的中间结点 Ideas 这题直接秒杀吧,快慢指针,快指针一次走两步,慢指针一次走一步,快指针到头之后慢指针正好到链表中间. Code C++ class Solution {public ...
- LeetCode刷题 876链表的中间结点
876. 链表的中间结点 难度简单550收藏分享切换为英文接收动态反馈 给定一个头结点为 head 的非空单链表,返回链表的中间结点. 如果有两个中间结点,则返回第二个中间结点. 示例 1: 输入:[ ...
- LeetCode Java刷题笔记—876. 链表的中间结点
876. 链表的中间结点 给定一个头结点为 head 的非空单链表,返回链表的中间结点.如果有两个中间结点,则返回第二个中间结点. 简单难度.使用快慢指针即可,快指针fast每次走2步,慢指针slow ...
- LeetCode 876——链表的中间结点
1. 题目 给定一个带有头结点 head 的非空单链表,返回链表的中间结点. 如果有两个中间结点,则返回第二个中间结点. 示例 1: 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形 ...
最新文章
- LeetCode 929	 Unique Email Addresses--python一行解法,Java解法
- mac中flutter配置
- 寻宝机器人科技竞赛_永州:机器人设计竞赛展现中小学生对现代科技的热诚
- 验证用户输入的是不是中文名字 淘宝精品案例 元素样式设置的方式 链式编程
- 都在说TDD开发,那到底TDD是什么?
- 数据库实验三 SQL查询数据
- [Leetcode][第24题][JAVA][两两交还的链表中的节点][递归][三指针]
- Ubuntu Server 18.04 安装
- Windows可视化编程C++基础知识
- 20线程测试cpu性能软件,cpu测试工具(wPrime Benchmark)
- 解决无法删除文件:无法读取源文件或磁盘
- 给大家讲解一下 AIDL原理分析
- qq登录界面句柄_天天玩QQ!知道登录界面那两个人是谁吗?网友:不是情侣?...
- Forth 语言学习
- 你的必备技能 —— 方法
- linux系统单网卡绑定双IP的方法
- HTML5期末大作业:个人空间相册网页设计 (6页) HTML+CSS+JavaScript
- 今天,阿里云亮出四张“王牌”,平头哥首次交货!
- Xilinx 8B10B转换
- 如何将立创EDA中的元器件的原理图/封装和3D模型导入AD的库中
热门文章
- 【索引】Chapter 1. Algorithm Design
- 48V输入智能磁吸灯-欧创芯OC5266 60V 1.5A 高恒流精度LED 恒流驱动器
- 职场必备!学会这4个技巧,便可轻松操作Excel!
- 用 Delphi 学设计模式(一) 之 简单工厂篇
- 2019年国赛高教杯数学建模E题薄利多销分析解题全过程文档及程序
- Druid数据源MySql语句,添加租户(tenant_id)id
- ((蓝桥杯 刷题全集)【备战(蓝桥杯)算法竞赛-第6天(动态规划 专题)】( 从头开始重新做题,记录备战竞赛路上的每一道题 )距离蓝桥杯还有61天
- 重量(计量单位)英文缩写和转换表
- dcmm认证发证机构有哪些?
- 西藏春运送服务 让旅客带着温暖出发