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

获取链表中间位置的两种方法方法

方法一:

我们可以计算链表节点的数量,然后遍历链表找到前半部分的尾节点。

方法二:

我们也可以使用快慢指针在一次遍历中找到:慢指针一次走一步,快指针一次走两步,快慢指针同时出发。当快指针移动到链表的末尾时,慢指针恰好到链表的中间。通过慢指针将链表分为两部分。

慢指针:前半部分的末尾,以慢指针为界将链表分成前后两部分

快指针:后半部分的开始

若链表有奇数个节点,则中间的节点应该看作是前半部分。

private ListNode endOfFirstHalf(ListNode head) {ListNode fast = head;ListNode slow = head;while (fast.next != null && fast.next.next != null) {fast = fast.next.next;slow = slow.next;}return slow;}

http://www.lryc.cn/news/423882.html

相关文章:

  • 第二十天的学习(2024.8.8)Vue拓展
  • 微信小程序教程011:全局配置:Window
  • Tomcat服务器和Web项目的部署
  • PCIe学习笔记(22)
  • Vue3 依赖注入Provide / Inject
  • Python | Leetcode Python题解之第332题重新安排行程
  • React状态管理:react-redux和redux-saga(适合由vue转到react的同学)
  • 刷题技巧:双指针法的核心思想总结+例题整合+力扣接雨水双指针c++实现
  • 什么是前端微服务,有何优势
  • 小论文写作——02:编故事
  • GIT企业开发使用介绍
  • 文件上传-前端验证
  • ROT加密算法login-RESERVE
  • C++ 新特性 | C++20 常用新特性介绍
  • Java设计模式之策略模式实践
  • C语言——结构体数组、结构体指针、结构体函数与二级指针
  • 【4】策略模式
  • BGP 反射器联邦实验
  • stm32入门学习13-时钟RTC
  • vuex properties of undefined (reading ‘getters‘)
  • 再谈表的约束
  • 认识一下测试策略与测试方案
  • Gradle 查看包的依赖关系
  • 虚幻5|给攻击添加特效
  • Delphi包管理与依赖:掌握GetIt与DelphiPI的艺术
  • 如何使用unittest和pytest进行python脚本的单元测试
  • Java中的值传递与引用传递
  • Seaborn库
  • openresty整合modsecurity
  • 结构体structure、共用体union