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

示例 2:
输入:head = [1,2], pos = 0
输出:true
解释:链表中有一个环,其尾部连接到第一个节点。

示例 3:
输入:head = [1], pos = -1
输出:false
解释:链表中没有环。

解题思想:这道题我们可以定义两个指针,快慢指针思想,即一个每次后移一位,另一个每次移动两位,如果两者能相遇,那就说明是个环形链表。
/**
* 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) {
ListNode cur1 = head;
ListNode cur2 = head;
if(head == null){
return false;
}
while(cur1 != null && cur2 != null){
if(cur2.next == null){
return false;
}
cur1 = cur1.next;
cur2 = cur2.next.next;
if(cur1 == cur2){
return true;
}
}
return false;
}
}
本文介绍了一种使用快慢指针的方法来判断链表是否存在环。通过实例演示了当链表尾部连接到不同节点时如何识别环的存在。适用于解决常见的链表数据结构问题。
&spm=1001.2101.3001.5002&articleId=88981034&d=1&t=3&u=9e23239508cb4bb7a61efa310686893e)
377

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



