java返回链表的中间结点_876. 链表的中间结点
876. 链表的中间结点
1、题目描述
给定一个带有头结点 head 的非空单链表,返回链表的中间结点。
如果有两个中间结点,则返回第二个中间结点。
2、java编程语言实现
2.1、常规做法
public static ListNode middleNode(ListNode head) {
if(head == null) return null;
//定义辅助指针
ListNode pCurrent = head;
//获取链表的长度
int count = 0;
while(pCurrent != null) {
count++;
pCurrent = pCurrent.next;
}
pCurrent = head;
//如果是奇数
for(int i = 2;i <= count/2 + 1;i++ ) {
pCurrent = pCurrent.next;
}
return pCurrent;
}
测试结果:
2.2、快慢指针做法
public static ListNode middleNode(ListNode head) {
if(head == null) return null;
//定义快慢指针
ListNode p1 = head; //快指针
ListNode p2 = head; //慢指针
//1-2-3-4-5
//p1走两步,p2走一步
while(p2 != null && p2.next != null) {
p1 = p1.next;
p2 = p2.next.next;
}
return p1;
}
测试结果:
3、C语言实现
3.1、常规做法
struct ListNode* middleNode(struct ListNode* head){
if(head == NULL) return NULL;
//定义辅助指针
struct ListNode* pCurrent = head;
//获取链表的长度
int count = 0;
while(pCurrent != NULL) {
count++;
pCurrent = pCurrent->next;
}
pCurrent = head;
//如果是奇数
for(int i = 2;i <= count/2 + 1;i++ ) {
pCurrent = pCurrent->next;
}
return pCurrent;
}
测试结果:
3.2、快慢指针做法
struct ListNode* middleNode(struct ListNode* head){
if(head == NULL) return NULL;
//定义快慢指针
struct ListNode* p1 = head; //快指针
struct ListNode* p2 = head; //慢指针
//1-2-3-4-5
//p1走两步,p2走一步
while(p2 != NULL && p2->next != NULL) {
p1 = p1->next;
p2 = p2->next->next;
}
return p1;
}
测试结果:
java返回链表的中间结点_876. 链表的中间结点相关推荐
- java单链表查询功能,Java 实现简答的单链表的功能
作者:林子木 博客网址:http://blog.csdn.net/wolinxuebin 參考网址:http://blog.csdn.net/sunsaigang/article/details/5 ...
- java数据结构与算法之双链表设计与实现
转载请注明出处(万分感谢!): http://blog.csdn.net/javazejian/article/details/53047590 出自[zejian的博客] 关联文章: java数据结 ...
- Java数据结构与算法-SingleLinkedList单向链表插入,删除,查找,修改详解及代码
SingleLinkedList单向链表插入,删除,查找,修改详解及代码 单向链表学习目标 1. 链表的介绍 2. 单向链表的存储特点以及原理 3. 基本操作:插入,删除等 4. 单向链表应用场景举例 ...
- 【Java】环形链表 ( 给定一个链表,判断链表中是否有环)
题目描述 :给你一个链表的头节点 head ,判断链表中是否有环. 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环. 为了表示给定链表中的环,评测系统内部使用整数 po ...
- Java单链表、双端链表、有序链表实现
Java单链表.双端链表.有序链表实现 原创 2014年03月31日 23:45:35 标签: Java / 单链表 / 双端链表 / 有序链表 65040 单链表: insertFirst:在表头插 ...
- Java二叉搜索树转循环链表,关于java:二叉搜索树转换为单向链表interview1712
题目形容 二叉树数据结构TreeNode可用来示意单向链表(其中left置空,right为下一个链表节点).实现一个办法,把二叉搜寻树转换为单向链表,要求仍然合乎二叉搜寻树的性质,转换操作应是旧址的, ...
- TypeScript算法专题 - blog9 - 单链表统计 : 返回指定值在单链表结点中的出现次数
TypeScript数据结构与算法专题 - [单链表9] 单链表统计 : 返回指定值在单链表结点中的出现次数 李俊才 CSDN:jcLee95 邮箱:291148484@163.com 专题目录:ht ...
- 判断两个无环单向链表/有环单向链表是否相交,并返回相交节点
题目描述:单链表可能有环,也可能无环.给定两个单链表的头节点 head1 和 head2, 这两个链表可能相交,也可能不相交.请实现一个函数,如果两个链表相交,请返回相交 的第一个节点;如果不相交,返 ...
- 【JAVA】PAT 乙级 1025 反转链表(测试点5超时,牛客网通过)
[JAVA]PAT 乙级 1025 反转链表(测试点5超时,牛客网通过) 题目链接 给定一个常数 K 以及一个单链表 L,请编写程序将 L 中每 K 个结点反转.例如:给定 L 为 1→2→3→4→5 ...
最新文章
- raise IOError('The file is not exist!')
- prefuse学习(二)显示一张图
- leetcode209. 长度最小的子数组(暴力+滑动窗口)
- ExtJs CheckboxSelectionModel 全选操作后 清空表格头的checkBox
- Java-控制台接受用户输入数据的方法
- django系列8.3--django中间件实现登录验证(1)
- NUC1305 哥德巴赫猜想【筛选法】
- 请教各位前辈一个问题。
- java模拟form表单提交图片文件
- 基于nvidia的ffmpeg编解码加速
- 固高运动控制卡原点回零函数
- appium ios端自动化测试配置
- 萤石云视频Android SDK接口使用说明
- windos找不到文件:打开fla文件时候报错!
- win2008 r2 配置程序office访问权限
- 猫学习IOS(四)UI半小时就搞定Tom猫
- LocalSolver-全领域、超大规模混合变量数学规划介绍
- android swf 播放器代码,Android Flash swf播放器源码(2019)
- 结构光资料 | 分享几个结构光方向研究者的主页
- 代码实践:基于LSTM网络的DEAP情感数据集情感分类