文章目录

  • 前言
  • 一、方法一
  • 二、方法二
  • 总结

前言

leetcode新手村876.链表的中间结点


提示:以下是本篇文章正文内容,下面案例可供参考

一、方法一

第一种方法:
首先遍历一遍链表,记录下节点的数目。再遍历一遍链表,遍历到n/2处停下,即得到链表的中间结点
需要注意的地方就是这个链表是没有一个空的头节点的,头节点直接就是第一个元素

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };method1:先遍历整个单链表,找出长度,/2,可得中间的位置再从头向后查找/2个注意:这个是没有头结点的链表*/struct ListNode* middleNode(struct ListNode* head){//struct ListNode * p = head->next;struct ListNode * p = head;int n = 0;while(p != NULL){n++;p = p->next;}p = head;for(int i=1; i<=n/2; i++){p = p->next;}return p;
}

二、方法二

定义快慢两个指针,每次快指针走两个节点,慢指针走一个节点,当快指针走到结尾的时候,慢指针正好走到链表的中间。
代码如下(示例):

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };method2:使用快慢两个指针*/
struct ListNode* middleNode(struct ListNode* head){struct ListNode *quickP, *slowP;quickP = head;slowP = head;while(quickP != NULL){quickP = quickP->next;if(quickP == NULL)break;quickP = quickP->next;slowP = slowP->next;}return slowP;
}

总结

没什么好总结的

leetcode876.链表的中间结点相关推荐

  1. leetcode876. 链表的中间结点

    leetcode876. 链表的中间结点 题目描述 链接: leetcode876. 给定一个头结点为 head 的非空单链表,返回链表的中间结点. 如果有两个中间结点,则返回第二个中间结点. 示例1 ...

  2. leetcode-876. 链表的中间结点解法

    给定一个带有头结点 head 的非空单链表,返回链表的中间结点. 如果有两个中间结点,则返回第二个中间结点. 示例 1: 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式:[3,4 ...

  3. LeetCode-876. 链表的中间结点 C语言

    876. 链表的中间结点 给定一个头结点为 head 的非空单链表,返回链表的中间结点. 如果有两个中间结点,则返回第二个中间结点. 示例 1: 输入:[1,2,3,4,5] 输出:此列表中的结点 3 ...

  4. LeetCode-876. 链表的中间结点

    题目 给定一个带有头结点 head 的非空单链表,返回链表的中间结点. 如果有两个中间结点,则返回第二个中间结点. 示例 1: 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式:[ ...

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

    1. 题目 给定一个带有头结点 head 的非空单链表,返回链表的中间结点. 如果有两个中间结点,则返回第二个中间结点. 示例 1: 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形 ...

  6. Leetcode 876. 链表的中间结点 (每日一题 20210918)

    给定一个头结点为 head 的非空单链表,返回链表的中间结点.如果有两个中间结点,则返回第二个中间结点.示例 1:输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式:[3,4,5]) ...

  7. 876. 链表的中间结点(C语言)

    **给定一个头结点为 head 的非空单链表,返回链表的中间结点. 如果有两个中间结点,则返回第二个中间结点. 示例 1: 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式:[3, ...

  8. 七十一、去重交换排序链表、 求链表的中间结点

    @Author:Runsen 编程的本质来源于算法,而算法的本质来源于数学,编程只不过将数学题进行代码化. ---- Runsen 最近在重新梳理学算法的知识,本文为链表常见操作复习的总结文章,会讲解 ...

  9. LeetCode Algorithm 876. 链表的中间结点

    876. 链表的中间结点 Ideas 这题直接秒杀吧,快慢指针,快指针一次走两步,慢指针一次走一步,快指针到头之后慢指针正好到链表中间. Code C++ class Solution {public ...

最新文章

  1. 19-7-16学习笔记
  2. mysql流量控制_UDP流量控制之分析
  3. 一篇文章带你飞,轻松弄懂 CDN 技术原理
  4. CFileDialog的基本使用
  5. 如何使用 Python 实现微信消息防撤回
  6. Atitit.java 反编译 工具  attilax 总结
  7. 用友nc系统服务器端口号,用友NC数据库服务器参数配置说明
  8. Android 手机修改 WiFi MAC 地址
  9. HDU-2819-Swap [二分匹配][输出路径]
  10. 解决Mysql计算时除数为0
  11. 数据库原理与应用实验九 视图的使用
  12. unlink快速入门
  13. 记一次企业邮官网SEO优化
  14. 稀疏数组练习demo 数据结构和算法
  15. 微店开放平台接入指南
  16. Application Server
  17. 如何在vscode上运行调试C++(最简单的方法)
  18. 从键盘上输入一个字符,判断并输出是控制符、数字字符、大写字母、小写字母或是其他字符
  19. php x86什么意思,win10x86是什么意思
  20. Linux中LVM的工作原理是什么?优缺点有哪些?

热门文章

  1. 计算机毕业设计asp.net的高校科研项目管理系统(源码+系统+mysql数据库+Lw文档)
  2. 分享爬虫的简单知识。附带爬虫案例。
  3. 期末作业成品代码——威海影视(1页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码
  4. 大数据可视化研究应用
  5. 一文读懂射频器件业未来发展与趋势
  6. encoder to decoder
  7. 如何用myeclipse远程调试tomcat
  8. linux 常用命令记录
  9. 闭环控制(自动控制理论)
  10. KVM镜像管理利器-guestfish使用详解