您的位置:首页 > 其它

Leetcode题库:给定一个带有头结点 head 的非空单链表,返回链表的中间结点,如果有两个中间节点则返回第二个

2020-06-05 08:15 441 查看

要求:给定一个带有头结点 head 的非空单链表,返回链表的中间结点
测试案例:1-2-3-4-5
输出结果:3
测试案例:1-2-3-4-5-6
输出结果:4

public Node middleNode() {
if (this.head == null) {
return null;
}
//快慢指针:定义两根指针,移动的速度一快一慢,以此来制造出自己想要的差值。这个差值可以让我们找到链表上相应的节点。
Node fast = this.head;
Node slow = this.head;
while (fast != null && fast.next != null) {
//fast!=null适用于偶数长度的链表,fast.next!=null使用于奇数长度的链表
// 如果fast.next为空,那么fast.next.next则会出现指针异常。所以限定条件时fast和fast.next都不能为空
fast = fast.next.next;
slow = slow.next;
}
return slow;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐