题目
给定一个链表,判断链表中是否有环。
为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。
示例 1:
输入:head = [3,2,0,-4], pos = 1
输出:true
解释:链表中有一个环,其尾部连接到第二个节点。

链接:https://leetcode-cn.com/problems/linked-list-cycle
分析及反思
刚开始题目有点没明白 以为pos还要自己来算 结果也没有输入pos,,,我hashMap都写好了哈哈哈 结果是 pos代表结果,,迷惑行为鸭
参考上述文章 哈哈哈
使用双指针,一个指针每次移动一个节点,一个指针每次移动两个节点,如果存在环,那么这两个指针一定会相遇。
要注意第一个节点如果为空 所以要第一个判 下一个节点是否为空
同时把本节点 下一个节点 下下一个节点也当做判断条件 只要有一个为空 定为非闭环
代码
/**
* Definition for singly-linked list.
*/
class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
next = null;
}
}
public class Solution {
public boolean hasCycle(ListNode head) {
if (head == null) return false;//一开始
ListNode s = head;
ListNode f = head.next;
while (s != null && f != null && f.next != null) {//s s.next s.next.next
if (s == f) return true;//一开始就是环 或者最后步进为环
s = s.next;
f = f.next.next;
}
return false;
}
}
本文地址:https://dxoca.cn/Algorithm/362.html 百度已收录
版权说明:若无注明,本文皆为“Dxoca's blog (寒光博客)”原创,转载请保留文章出处。