leetcode题141:环形链表

题目描述:

 解题思路:

这个题目在左神算法课上初级班讲解链表的课上就有讲如何判断一个链表是否有环,我自己总结的笔记在:https://blog.csdn.net/PnJgHT/article/details/120958609​​​​​​

笔记中有两种方法:一种是用哈希表,这个方法就是逻辑比较简单,把每个节点依次放进表中,如果有返回已存在的节点就是有环;但是因为题目的进阶要求是用O(1)的内存解决问题,所以就用到第二种方法:快慢指针。关于有环链表的数学特点在笔记中都有总结。下面是我得代码:

class Solution {
    public boolean hasCycle(ListNode head) {
        ListNode f,s;
        f = head;
        s = head;
        if (head == null || head.next == null){
            return false;
        }
        while (f != null && f.next!=null && f.next.next!=null){
            f = f.next.next;
            s = s.next;
            if (f == s){
                return true;
            }
        }
        return false;
    }
}

我在提交的时候遇到了几个问题:1、还是base case 问题没有考虑充分,对于小样本数据,比如只有一个或者两个或者空节点的情况的判断。2、是对于指针越界,没有考虑充分,会出现报错。

官方给出的题解基本也是上面的两种方法,这里就不贴代码了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值