876.链表的中间节点
给定一个头结点为 head 的非空单链表,返回链表的中间结点。
如果有两个中间结点,则返回第二个中间结点。
-
思路:利用快慢指针,循环遍历当slow节点走一步,fast节点走两步,直到fast为null或fast.next为null条件成立终止循环,返回slow节点则为链表的中间节点。
class Solution {
public ListNode middleNode(ListNode head) {
ListNode slow = head;
ListNode fast = head;
while(fast!=null&&fast.next!=null){
slow = slow.next;
fast = fast.next.next;
}
return slow;
}
}
判断链接是否包含环
-
思路:利用快慢指针,当快慢节点重合,则说明包含环,否则,则说明不包含环。
-
如果
fast最终遇到空指针,说明链表中没有环;如果fast最终和slow相遇,那肯定是fast超过了slow一圈,说明链表中含有环。
本文介绍了一种使用快慢指针法寻找链表中间节点的方法,并通过相同原理判断链表是否包含环。适用于单链表问题解决。
730

被折叠的 条评论
为什么被折叠?



