LeetCode每日一题:链表的中间结点(No.876)

题目:链表的中间结点


给定一个带有头结点 head 的非空单链表,返回链表的中间结点。
如果有两个中间结点,则返回第二个中间结点
复制代码

示例:


输入:[1,2,3,4,5]
输出:此列表中的结点 3 (序列化形式:[3,4,5])
返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。
注意,我们返回了一个 ListNode 类型的对象 ans,这样:
ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.next = NULL.

输入:[1,2,3,4,5,6]
输出:此列表中的结点 4 (序列化形式:[4,5,6])
由于该列表有两个中间结点,值分别为 3 和 4,我们返回第二个结点。
复制代码

思考:


这道题可以通过快慢指针法来解决。
定义两个指针,快指针是慢指针速度的两倍。
当快指针走到链表末尾时,慢指针正好到达链表的中间节点。
复制代码

实现:


  class Solution {
    public int fib(int N) {
        if (N == 0) {
            return 0;
        }
        if (N == 1) {
            return 1;
        }
        return fib(N - 1) + fib(N - 2);
    }
}复制代码

转载于:https://juejin.im/post/5c9f86426fb9a05e4868b7cd

【数据结构】单链表—求链表中间节点(只遍历一次链表)— 快慢指针 题目:给出一个单链表的,不知道结点N的值,怎样只遍历一次就可以求出中间结点。我们可以定义两个指针,快指针和慢指针,都从头开始遍历链表,快指针每次走两步,慢指针每次走一步,当快指针走到结尾时,慢指针指向的便是链表的中间节点。代码如下:template<class T> struct ListNode { T _value; ListNode<T>* _next; ListNode 阅读详情

相关推荐

单链表中求中间节点

问题描述求单链表中间节点的值,如果中间有2个,只要第一个,就是偶数情况下,只要中间的第一个。速度要快! 解决方法可以参照这篇博文:http://blog.csdn.net/dawn_after_dark/article/details/73611115 这篇博文所说的第一种方法这里就不阐述了。着重说一下第二种。 这里还是用小明和小王跑步的例子,小明与小王一起跑步,小王的速度是小明的2倍,当小王

dawn_after_dark的博客 1519

算法面试题:快速找到未知长度单链表的中间节点

有道算法面试题:快速找到未知长度单链表的中间节点。 你可以普通方法也可用比较好的方法,去解决这个问题。 由于单链表不知道长度,必须遍历完整个单链表才知道单恋表的长度,然后根据一般的长度去找中间结点,这是普通方法。 当然题目问的是快速找到,当然要用快速的方法啦。 这里我们快慢指针的方法来解决这个问题,快指针每次走2个结点,慢指针每次走1个结点,当快指针走完链表,慢指针刚好走到中间,这就是快慢

重庆李四 5121

别再瞎调了!STM32 Systick延时函数避坑指南(正点原子、野火、慧净代码对比)

本文深入解析STM32 Systick延时函数的实现差异与优化策略,对比正点原子、野火、慧净等主流方案的优缺点。针对us和ms级延时精度问题,提供避坑指南和高级优化技巧,帮助开发者根据项目需求选择最佳方案,提升嵌入式系统的定时控制精度。

weixin_28717807的博客 339

求单链表的中间节点

偶数个节点时返回中间两个节点的前一个 我们可以这样考虑,设想两个人跑步,一个人的速度是另外一个人的两倍,当速度快的人到达了终点,速度慢的人就在赛程的正中间。同样地,我们设置两个游动的指针,慢的指针移动步长为1,快的指针移动的步长为2。一开始都指向链表的头部,当遍历开始时,进行这样的操作:如果快的指针可以向前移动两步并且没有到达链表的尾部的话,快指针就向前移动2个节点,同时慢的指针向前移动1个节点

奋斗、 1297

西门子S7-1200/1500 PLC编程与应用技巧

西门子S7-1200 PLC是一款紧凑型的控制器,适用于小型到中型的自动化控制任务。紧凑设计:集成了I/O模块,减少了控制柜的空间需求。高性能:高达25µs的扫描时间,能够快速响应。模块化扩展:支持扩展输入输出模块、通信模块和智能模块,满足不同的应用需求。多种编程语言:支持Ladder图(梯形图)、功能块图(FBD)、结构化文本(ST)等多种编程语言。西门子S7-1200与S7-1500 PLC是强大且灵活的工业控制系统,适用于各种自动化应用。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 2666

PD虚拟机安装CentOS7后必做的Parallels Tools配置指南(附常见错误解决)

本文详细指导在Mac的Parallels Desktop虚拟机中安装CentOS 7后如何高效配置Parallels Tools,包括环境准备、镜像挂载、依赖问题解决及性能优化。特别针对常见错误如挂载失败、依赖缺失等提供实用解决方案,帮助用户实现主机与虚拟机间的无缝交互和显示优化。

weixin_29288313的博客 299

LeetCode每日一练 —— 876. 链表的中间结点

leetcode 876. 链表的中间结点

Edison's 小宇宙 9818

C++详解 二叉树的三种遍历方式

上一篇文章,讲了二叉树的创建——C++实现 链表存储二叉树 接下来讲解二叉树的三种遍历方式:先序(前序)遍历、中序遍历、后序遍历,三种方式都是DFS(Depth First Search)深度优先搜索,核心思想都是函数的递归(栈),如果你能理解上面这篇文章中创建二叉树的具体过程,那么遍历就轻而易举 1.先序遍历 Former_Order_Traversel(BinTree_Node* p) { ...

weixin_43335392的博客 5371

Java每日一题——> 876. 链表的中间结点

这是LeetCode上的 [876,链表的中间结点],难度为 [简单] 题意 给定一个头结点为 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 示例1 输入:[1,2,3,4,5] 输出:此列表中的结点 3 示例2 输入:[1,2,3,4,5,6] 输出:此列表中的结点 4 题解(快慢指针) 思路分析 求链表中间结点需要清楚一下两个问题 当链表为偶数时,按理说是不存在中间结点,但题意要求它只需返回中间链的下一个结点作为中间结点(可以理解为从中间链断开分成两

stormzhuo的博客 7322

记录LeNet的硬件加速器设计(一)

LeNet的硬件加速器设计实现。

2301_81029398的博客 3543

xtop:multi_driven_net与incomplete_timing_cell fail reason 分析

man multi_driven_net”可以得知,这个问题是multi driven结构引起的,使用命令“get_failed_pins -reason multi_driven_net”,获取violation pin。“man incomplete_timing_cell”可以得知,这个fail reason的原因是缺少timing library cell,检查并补全后这个错误就显示了。这里选择的解决方法是修改lib文件,把inout改成input,重新lib2idb。通过这种方法解决了问题。

m0_61544122的博客 564

LeetCode每日精进:876.链表的中间结点

只要结点不为空,size就自增一,跳出循环时,size则为链表结点个数。该链表有两个中间结点,值分别为 3 和 4 ,返回第二个结点。如果有两个中间结点,则返回第二个中间结点。循环条件为fast的next指针不能为空。定义slow和fast指针,并。再次遍历,获得中间结点位置。循环条件为fast不能为空。,请你找出并返回链表的中间结点。链表只有一个中间结点,值为 3。

ll778811的博客 795

标准论文参考文献添加方法——Zotero入门使用教程

第一篇论文投出去了,写一下最后一步的参考文献修饰润色吧! 论文的参考文献,即References,是论文的最后一步,相信不管是写毕设论文还是期刊论文都遇到过需要修改参考文献的情况,非常之麻烦。而且参考文献中经常会与生僻奇怪气体出现,一个一个修改非常浪费时间,这里介绍一下一个非常好用的软件Zetero。 第一步:软件的下载安装及绑定Word 尽量使用客户端吧,

MISAYAONE的博客 20万+

力扣---LeetCode876. 链表的中间结点

第六弹 --- 力扣LeetCode每日一题

小沈.的博客 584

【24E】SWT6652 wifi驱动加载失败问题分析及解决方案

修改驱动配置Kconfig。是由于内存分配失败导致。

wgl307293845的博客 219

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

python学习leetcode每日一题——链表的中间结点

876. 链表的中间结点 题目: 给定一个带有头结点 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 示例 1: 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式:[3,4,5]) 返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。 注意,我们返回了一个 ListNode 类型的对象 ans,这样: ans.va...

skila 852

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【每日刷题】Day7

1. 反转链表 2. 移除链表元素 3. 链表的中间结点

2301_78022459的博客 1383

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

LeetCode刷题876-简单-链表的中间结点

LeetCode刷题876-简单-链表的中间结点

布小禅的博客 506

【LeetCode】每日一题:链表部分经典题型

链表系列经典的面试题型

qq_63320529的博客 759

Leetcode-每日一题【876.链表的中间结点】

给你单链表的头结点head,请你找出并返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。[3,4,5]链表只有一个中间结点,值为 3输入:head = [1,2,3,4,5,6]输出:[4,5,6]解释:该链表有两个中间结点,值分别为 3 和 4 ,返回第二个结点。链表的结点数范围是 [1, 100]

lucky_1314520的博客 556

[每日一题] 158. 链表的中间结点(快慢指针、常规解法)

文章目录1. 题目来源2. 题目说明3. 题目解析方法一:快慢指针+常规解法 1. 题目来源 链接:876. 链表的中间结点 来源:LeetCode 2. 题目说明 3. 题目解析 方法一:快慢指针+常规解法 所以就简单的快慢指针吗??? 参见代码如下: // 执行用时 :0 ms, 在所有 C++ 提交中击败了100.00%的用户 // 内存消耗 :8 MB, 在所有 C++ 提交中击败了10...

Y-puyu 的博客 313

【LeetCode每日一题】——876.链表的中间结点

给定一个头结点为 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。

IronmanJay 279

A.每日一题:876. 链表的中间结点+2130. 链表最大孪生和

A.每日一题:2130. 链表最大孪生和解析

要努力去发光,而不是被照亮~ 107

LeetCode每日一题———876. 链表的中间结点

今天的题很简单了,我的思路就是遍历两次,第一次记录长度,第二次遍历到一半就就行,直接贴代码了 时间复杂度:O(N),其中 N 是给定链表的结点数目。 空间复杂度:O(1),只需要常数空间存放变量和指针。 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *n...

qq_36202348的博客 210

每日一题——力扣876. 链表的中间结点(举一反三+思想解读+逐步优化)

这段代码是一个高效的解决方案,它正确地实现了在单链表中找到中间节点的功能。时间复杂度为O(N),空间复杂度为O(1),符合解决此类问题的最佳实践。不过,代码的循环条件和指针移动逻辑可以稍作优化,以提高代码的可读性。例如,可以使用显式的循环条件,并将precede指针的移动逻辑封装到一个单独的函数中,以提高代码的模块化和清晰度。

weixin_44915521的博客 1245

力扣2020春季每日一题 -876题 链表的中间结点

2020年3月23日。 题出处:点击此处 考点:链表的遍历,快慢指针的运用。 题解: 1.本道题要求删除链表的中间节点。很明显,最暴力的解法就是二次遍历。 时间复杂度为O(n),空间复杂度为O(1) 这是只要学过链表的人,都应该掌握的。 2.本道题应该学会的一种思想为快慢指针。 即在链表中存在双指针,一快一慢。 在这道题中快指针一次走两步,而慢指针一次走一步。 为什么这样能work? 因为当快指针...

安洁莉娅丶的博客 247
上一篇: CSS样式
下一篇: 从JS事件循环(Event Loop)机制到vue.nextTick的实现
weixin_34026484
博客等级 码龄11年 4642粉丝 152原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值