Leetcode876. 链表的中间结点

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

Every day a leetcode

题目来源:876. 链表的中间结点

解法1:遍历

先遍历一次链表,得到链表的长度len。

第len / 2处的结点就是中间结点。

代码:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */


struct ListNode* middleNode(struct ListNode* head){
    int len=0;
    struct ListNode* p=head;
    struct ListNode* ans=head;
    while(p)
    {
        len++;
        p=p->next;
    }
    for(int i=0;i<len/2;i++) ans=ans->next;
    return ans;
}

结果:
在这里插入图片描述

解法2:快慢指针

设置一个快指针和一个慢指针,快指针一次走 2 步,慢指针一次走 1 步。

分两种情况:

  1. 链表长度为奇数,当快指针指向链表的最后一个结点时,慢指针指向中间结点;
  2. 链表长度为偶数,当快指针指向链表最后一个结点的next时,慢指针指向中间结点。

代码:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */


struct ListNode* middleNode(struct ListNode* head){
    struct ListNode* fast=head;
    struct ListNode* slow=head;
    while(fast && fast->next)
    {
        fast=fast->next->next;
        slow=slow->next;
    }
    return slow;
}

结果:
在这里插入图片描述

苹果搜索广告ASA开户教程 阅读导航 一、创建账号 1、登录网站 2、填写账号主体信息 3、填写商家和发票信息 4、选择付款方式 二、上传审核材料 1、上传文件 2、请求审批 3、上传文件中的常见问题 一、创建账号 1、用Apple ID登录ASA网站 首先我们进入开户网址:https://app-ads.apple.com/ 如果已拥有Apple ID,直接登录即可,如果没有Apple ID,可以先按照步骤创建Apple ID,再返回登录。 注意,这里登录的Apple ID也有讲究: ① 如果是开发 阅读详情

相关推荐

STM32CubeMX、keil、simulink联合开发MCU教程

一、整体思路 利用Matlab的simulink搭建模型生成C代码,通过stm32cubemx生成工程,最后在KEIL或者IAR等工具里面编译生成代码下载至MCU中执行。 本文以流水灯建立模型和简单使用定时器为例进行演示。 二、开发环境 1、安装Matlab Matlab版本建议在2013B以上,本文使用Matlab 2016a。 2、安装STM32硬件支持包 下载地址(https://www.stmcu.org.cn/document/detail/index/id-216053) 安装完成后重启MAT

tzlaa的博客 7740

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

leetcode 876. 链表的中间结点

Edison's 小宇宙 9819

第一章 初识SpringBoot

提供大量的自动配置Spring和第三方库,开发者可以根据项目需求选择相关的starters依赖,而无需手动配置大量的Spring配置文件,开箱即用,无需配置XML,无代码生成。Spring Boot与Spring Cloud等框架集成,为构建微服务提供了强大的支持,并通过Spring Cloud实现服务注册、负载均衡、熔断等功能。本质上讲,Spring Boot就是Spring,它做了那些本应我们去做的Spring Bean配置等工作。以上就是一个简单的Spring Boot应用的创建和运行过程。

Calvin的博客 1581

力扣_876. 链表的中间结点

力扣_876. 链表的中间结点 给你单链表的头结点 `head` ,请你找出并返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。

seabirdssss的博客 601

角谱迭代与傅里叶变换迭代算法(GS)的原理及其实例演示分析

角谱迭代与傅里叶变换迭代算法(GS)的原理及其实例演示分析 目前,迭代法和强度传输方程(TIE)法是两类典型的非干涉相位检索技术(Phase Retrieval,被称为相位恢复、相位检索、相位反演法、相位复原等)。迭代法中的经典算法是Gerchberg-Saxton(GS),随后,出现了包括错误减少算法(ER)、混合输入输出法(HIO)、梯度搜索算法、角谱迭代算法等改进算法。...

简单光学 2万+

STM32CubeMX平台F4系列固件下载核心要点

详解STM32CubeMX平台下F4系列单片机的固件包下载方法与常见问题,重点讲解stm32cubemx固件包下载流程及配置技巧,帮助开发者快速完成开发环境搭建。

weixin_42575505的博客 896

LeetCode —— 876. 链表的中间结点

LeetCode —— 876. 链表的中间结点

微笑,来自内心坚不可摧的自信。 572

智能车数字图像处理算法入门及C语言实现

智能车图像的最最基本入门算法介绍及C语言实现,二值化 - 特征识别 - 补线 - 中心巡线 - 偏差曲率计算。

不想随波逐流的大学生一枚,我们每个人都在努力奔跑 5111

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

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

小沈.的博客 584

ZYNQ烧写程序到flash

1.打开SDK创建FBSl项目 点击finish 2.创建BootImage 导入fsbl.elf、.bin、.elf三个文件,Create Image 生成BOOT.bin文件 3.将BOOT文件烧录到FLASH image File选择2中生成的BOOT.bin文件,FSBL File选择fsbl.elf文件,连接好ZYNQ的Jtag,点击Program,即可烧录。 4.烧录程序到FLASH失败 如果是第一次烧录,需更改创建的fsbl工程下的main函数,在如下代码处加入BootModeRegi

qq_40603614的博客 8360

开源网格划分软件-Gmsh二次开发教程 (4)网格生成与控制​

​本章将深入讲解Gmsh的网格生成技术,包括全局/局部网格控制、边界层生成、自适应细化等,并提供完整的代码示例。

ZQGG的博客 1475

力扣(LeetCode)876. 链表的中间结点

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

Pwnpanda的博客 300

工业机器人关节拆装流程_一文读懂模块化直驱电机及机器人关节模组

私信“干货”二字,即可领取138G伺服与机器人专属及电控资料!如果说芯片是智能行业最为重要的核心元件,那么电机几乎可以说是支撑了整个自动化和大工业生产以及现代社会最为重要的部件,全世界90%的能源是由电机发出来的,而70%是由电机消耗调的,电机可以说是整个人类社会能源循环的占有绝对地位的产品。普通伺服电机伺服电机其实已经算是电动机中比较高端的类型,特别是永磁同步类型的伺服电机,由于其启动快速,惯量...

weixin_32159771的博客 2155

leetcode 876.链表中间结点

链表中间结点 leetcode题目链接:876. 链表的中间结点 一、朴素解法 最直观的思路,因为不知道这个链表的长度,就先通过一次循环统计链表的长度len 之后第二次遍历,直到找到中间结点,输出 /** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode* middleNode(struct

qq_41122414的博客 407

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【LeetCode: 876. 链表的中间结点 + 链表】

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

Coder_ljw的博客 621

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

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

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

ll778811的博客 795

如何用快慢指针优雅地找到链表的中间结点?——LeetCode 876 题详解

LeetCode 876题(链表的中间结点),通过对比暴力解法和快慢指针法,揭示高效算法的核心思想。暴力法需两次遍历(O(n)时间),而快慢指针法仅需一次遍历即可定位中间节点,时间复杂度相同但更优雅。关键点在于快指针每次走两步,慢指针走一步,最终慢指针位置即所求。文章还拓展了快慢指针的其他应用(如环检测、删除中间节点),并引导读者思考变种问题。通过示例代码和步骤拆解,帮助读者掌握双指针技巧,提升面试竞争力。

月夜的风吹雨的博客 1464

LeetCode:876. 链表的中间结点

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

Doraemon_Zzn的博客 226

leetcode——876.链表的中间结点【双指针】

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

weixin_56800714的博客 285

876.力扣LeetCode_链表的中间结点

本文展示了三种使用快慢指针查找链表中点的C语言实现方法。第一种方法快指针每次走两步,当链表长度为偶数时返回中间偏右节点;第二种方法快指针分步前进,同样返回偏右节点;第三种方法在偶数长度时返回中间偏左节点。所有方法都先处理空链表或单节点链表的特殊情况,然后通过快慢指针遍历链表,最终返回慢指针指向的中间节点。

2401_82472941的博客 463

【力扣 简单 C】876. 链表的中间结点

【代码】【力扣 简单 C】876. 链表的中间结点。

2503_92320911的博客 322

【LeetCode】876. 链表的中间结点—力扣

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

qq_51581716的博客 289

LeetCode 876. 链表的中间结点

当你遇到一个链表问题时,可以问自己以下几个问题来判断是否适用快慢指针:我是不是在寻找一个特殊位置的节点,而不是特定值的节点?这个问题能否通过两个指针的“追及”或“相对距离”来解决?我能否通过让一个指针比另一个走得快,或者先走几步,来创造出解决问题的有利条件?如果答案是肯定的,那么快慢指针很可能就是解决问题的金钥匙。

Tanecious的博客 201

876. 链表的中间结点 - 力扣(LeetCode)

解释:该链表有两个中间结点,值分别为 3 和 4 ,返回第二个结点。节点为空时,快慢指针停止移动。此时慢指针所指的节点即为中间节点。这道题需要我们找到链表的中间节点,较为简便的方法是。输入:head = [1,2,3,4,5,6]如果有两个中间结点,则返回第二个中间结点。输入:head = [1,2,3,4,5]解释:链表只有一个中间结点,值为 3。,请你找出并返回链表的中间结点。指向头节点,快指针每次走。输出:[3,4,5]输出:[4,5,6]

q1111111da的博客 277

LeetCode 876、链表的中间结点

linux

2303_76162328的博客 128

leetcode 876. 链表的中间结点

这道题虽然简单,但是是进阶题目的基础,例如第2095题。本题作为找链表中间结点的标准方法。

weixin_41554427的博客 391
上一篇: Leetcode1184. 公交站间的距离
下一篇: Leetcode1346. 检查整数及其两倍数是否存在
UestcXiye
博客等级 码龄8年 9031粉丝 1306原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UestcXiye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值