LeetCode.876. Middle of the Linked List
Posted xusong95
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode.876. Middle of the Linked List相关的知识,希望对你有一定的参考价值。
题目的大意为找寻LinkedList的中间节点,如果有两个中间节点,返回第二个中间节点。
比如:
输入:[1,2,3,4,5]
输出:此列表中的结点 3 (序列化形式:[3,4,5])
或者:
输入:[1,2,3,4,5,6]
输出:此列表中的结点 4 (序列化形式:[4,5,6])
拿到这道题,我首先想到先获取链表长度,再取中间值,去查询节点。
代码实现为:
public ListNode middleNode(ListNode head) {
int length = 1;
ListNode temp = head;
while (temp.next != null) {
length++;
temp = temp.next;
}
int middle = length / 2;
for (int i = 0; i <= middle; i++) {
if (i == middle) {
return head;
}
head = head.next;
}
return null;
}
运行通过后,查询其他大神们提交的代码,发现还有一种结题方式比较好:
public ListNode middleNode(ListNode head) {
ListNode fast = head,slow = head;
while(fast!=null&& fast.next !=null){
fast = fast.next.next;
slow = slow.next;
}
return slow;
}
一种类似于龟兔赛跑的方式,fast节点每次走两步,slow节点每次走一步,当fast节点走到终点的时候,slow节点正好走一半,真是妙,学习了。
希望有一天我也能成为大神,加油。
以上是关于LeetCode.876. Middle of the Linked List的主要内容,如果未能解决你的问题,请参考以下文章
[LeetCode] 876. Middle of the Linked List
[LeetCode] 876. Middle of the Linked List
LeetCode 876 Middle of the Linked List 解题报告
LeetCode.876. Middle of the Linked List
LeetCode 876. Middle of the Linked List(获得链表中心结点)
[LeetCode] 876. Middle of the Linked List_Easy tag: Linked List