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

链表的中间结点数据结构oj题(力扣876)

目录

题目描述:

题目分析:

代码解决:


题目描述:

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

题目分析:

寻找中间节点这道题原理就是通过1/2总长度,对于我来说一开始想到的方法一就是先计算内部有多少个节点,然后进行除以二,得到中间节点数后,进行遍历到对应的中间节点(本人有点笨,只能想到这种方法了)。通过向大佬学习,我发现一个更加好用的方法,思路二就是快慢指针,这个快慢指针就是一个fast指针每次走两步,另一个low指针每次走一步,等fast出界时,low就是中间指针,这个方法是个好方法思路简单,代码也好写,就是难想出来哈哈哈。

代码解决:

思路一:

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/
typedef struct ListNode ListNode;
struct ListNode* middleNode(struct ListNode* head) {ListNode* n1, * n2;n1 = n2 = head;int count = 0;//遍历计算链表长度while (n1){n1 = n1->next;count++;}//移动到中间链表count = count / 2;while (count){n2 = n2->next;count--;}return n2;
}

思路二:

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/
typedef struct ListNode ListNode;
struct ListNode* middleNode(struct ListNode* head) {ListNode* fast = head;ListNode* low = head;while (fast != NULL && fast->next != NULL){fast = fast->next->next;low = low->next;}return low;
}

相关文章:

  • 容器化-k8s-介绍及下载安装教程
  • python的家教课程管理系统
  • 等离子模块【杀菌消毒】
  • MIPI接口设计
  • 【Linux】ssh命令 – 安全的远程连接服务
  • Vue3项目,子组件默认加载了两次,使用 defineAsyncComponent 引入组件后只加载一次
  • InfluxDB 2.7 连续查询实战指南:Task 替代方案详解
  • 几个正整数常用的位运算操作
  • [特殊字符][特殊字符]知识库PHP版 | ChatMoneyAI宝塔面板Docker多部署
  • JMeter 教程:编写 GET 请求脚本访问百度首页
  • 描述性统计图表
  • Python-homework
  • 前端面经 8 JS中的this 手写call apply bind方法
  • Go语言爬虫系列教程 实战项目JS逆向实现CSDN文章导出教程
  • CSS- 2.1 实战之图文混排、表格、表单
  • 搭建运行若依微服务版本ruoyi-cloud最新教程
  • 实变函数 第二章 点集
  • STM32外设AD-轮询法读取模板
  • 【简单模拟实现list】
  • 腾讯云MCP数据智能处理:简化数据探索与分析的全流程指南
  • 《制止滥用行政权力排除、限制竞争行为规定(修订草案征求意见稿)》公开征求意见
  • 河南:响鼓重锤对违规吃喝问题露头就打、反复敲打、人人喊打
  • 党建评:对违规宴饮等问题要坚决露头就打
  • 欠债七十万后,一个乡镇驿站站长的中年心事
  • 陕西旱情实探:大型灌区农业供水有保障,大旱之年无旱象
  • 市场监管总局等五部门约谈外卖平台企业