判断链表是否有环
面试官口述题目,要求实现函数,输入是一个头节点,输出是一个bool值。
相当经典的题目了,感觉面试官要是出这个题,应该是觉的你还不错,出个简单的做出来就完事儿了。剑指offer或者leetcode上的老题了,但是手撕代码经典的问题还是不变的。
1:能否想到快慢指针?
2:能否对边界条件进行处理?(头节点为空?没有环的情况下会不会死循环?只有一个节点?)
3:代码写的是否规范?时间复杂度是多少?
实现:
//不管什么语言,链表节点、树节点的定义要熟悉
class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
next = null;
}
}
public class Solution {
public boolean hasCycle(ListNode head) {
ListNode fast=head;
ListNode slow=fast;
while (fast!=null&&fast.next!=null) {
slow=slow.
本文详细介绍了面试中常见的链表问题——判断链表是否有环,以及如何找到环的入口节点。讨论了快慢指针的使用、边界条件处理,并提供了Java、Python、C++和JavaScript等语言的实现代码。此外,还提醒读者面试时可能遇到的更深层次问题,如O(1)空间复杂度解决方法。
订阅专栏 解锁全文

9万+

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



