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

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

在这里插入图片描述

📚博客主页:爱敲代码的小杨.

✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》

❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️

🙏小杨水平有限,欢迎各位大佬指点,相互学习进步!

文章目录

  • 1.题目描述
    • 示例1
    • 示例2
    • 提示
  • 2. 思路
  • 3.代码

1.题目描述

给你单链表的头结点 head ,请你找出并返回链表的中间结点。

如果有两个中间结点,则返回第二个中间结点。

示例1

img

输入:head = [1,2,3,4,5]

输出:[3,4,5]

解释:链表只有一个中间节点,值为3

示例2

img

输入:head = [1,2,3,4,5,6]

输出:[4,5,6]

解释:链表只有两个中间节点,值分别为3和4,返回第二个节点。

提示

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

题目链接

2. 思路

  1. 判断头结点的next是否为空,如果是直接返回头结点
  2. 定义两个指针slowfast,都指向头结点。
  3. 循环遍历链表,每次fast指向fastnextnext(每次移动两步);slow指向slownext(每次移动1步)
  4. 循环条件:fast == null循环结束(链表元素个数为偶数时),fast.next == null循环结束(链表元素个数为奇数时)。

image-20231218103009554

3.代码

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode middleNode(ListNode head) {if (head.next == null) {return head;}ListNode slow = head;ListNode fast = head;while (fast != null && fast.next != null) {fast = fast.next.next;slow = slow.next;}return slow;}
}

运行结果:

image-20231218103101436

相关文章:

  • CTFshow web(php命令执行 45-49)
  • 《Python 网络爬虫简易速速上手小册》第7章:如何绕过反爬虫技术?(2024 最新版)
  • C语言的循环结构
  • Unity笔记:相机移动
  • VSCode 文件夹增加右键打开
  • Git详细讲解
  • 逆向工程:揭开科技神秘面纱的艺术
  • 华为配置访客接入WLAN网络示例(MAC优先的Portal认证)
  • 《低功耗方法学》翻译——附录B:UPF命令语法
  • Cisco firepower2100系列使用FDM管理FTD
  • 自然语言学习nlp 六
  • clickhouse计算前后两点间经纬度距离
  • Hive与Presto中的列转行区别
  • “Hopf Oscillator-Based Gait Transition for A Quadruped Robot“代码复现
  • 致我的2023年——个人学年总结
  • 深入了解以太坊
  • Fundebug计费标准解释:事件数是如何定义的?
  • Hibernate最全面试题
  • in typeof instanceof ===这些运算符有什么作用
  • Linux各目录及每个目录的详细介绍
  • Netty源码解析1-Buffer
  • Rancher如何对接Ceph-RBD块存储
  • Sass Day-01
  • Spring Cloud中负载均衡器概览
  • Zsh 开发指南(第十四篇 文件读写)
  • 百度地图API标注+时间轴组件
  • 测试如何在敏捷团队中工作?
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 翻译:Hystrix - How To Use
  • 构建工具 - 收藏集 - 掘金
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 终端用户监控:真实用户监控还是模拟监控?
  • # 计算机视觉入门
  • $.ajax,axios,fetch三种ajax请求的区别
  • (04)odoo视图操作
  • (bean配置类的注解开发)学习Spring的第十三天
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (二)WCF的Binding模型
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (力扣)1314.矩阵区域和
  • (三) diretfbrc详解
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转)负载均衡,回话保持,cookie
  • (转载)深入super,看Python如何解决钻石继承难题
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • .Net转Java自学之路—基础巩固篇十三(集合)
  • [ 环境搭建篇 ] 安装 java 环境并配置环境变量(附 JDK1.8 安装包)
  • [\u4e00-\u9fa5] //匹配中文字符
  • [android]-如何在向服务器发送request时附加已保存的cookie数据
  • [Angular] 笔记 9:list/detail 页面以及@Output
  • [C++]拼图游戏
  • [C++]运行时,如何确保一个对象是只读的
  • [CC2642r1] ble5 stacks 蓝牙协议栈 介绍和理解