gpt4 book ai didi

java - 检查链表是否加入回开始

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:17:54 26 4
gpt4 key购买 nike

我正在尝试检查链表的最后一个节点是否指向头部。此代码似乎给出了问题的肯定结果,但也给出了包含指向非头节点的节点的列表的误报。

我一直在尝试不同的事情,例如检查慢速节点是否等于返回真点的头部,但这似乎不起作用。

public boolean isLinkedToStart(Node head) {
if (head == null) {
return false;
}
Node fast = head.next;
Node slow = head;
while (fast != null && fast.next != null) {
if (fast.next.next == slow) {
return true;
}
fast = fast.next.next;
slow = slow.next;
}
return false;
}

有什么建议吗?

最佳答案

public boolean isLinkedToStart(Node head) {
if (head == null) {
return false;
}
Node fast = head.next;
Node slow = head;
while (fast != null && fast.next != null) {
fast = fast.next.next;
slow = slow.next;
if(slow.next == head)
return true;
if (fast == slow)
return false;
}
return false;
}

好的,第三次是魅力。

如果在 slow 到达 head 之前找到了一个循环,那么我们找到了一个不同的循环。如果慢使它达到领先,那么循环就是领先。

关于java - 检查链表是否加入回开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19456829/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com