华为OD 面试手撕代码真题【判断链表是否有环】

本文详细介绍了面试中常见的链表问题——判断链表是否有环,以及如何找到环的入口节点。讨论了快慢指针的使用、边界条件处理,并提供了Java、Python、C++和JavaScript等语言的实现代码。此外,还提醒读者面试时可能遇到的更深层次问题,如O(1)空间复杂度解决方法。

判断链表是否有环

        面试官口述题目,要求实现函数,输入是一个头节点,输出是一个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.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MISAYAONE

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值