代码随想录(day8)—环形链表

题目

预备知识点:

for和while的区别

while语句属于循环语句,在判断是,如果条件为true,则会继续判断,直到false为止,即会进行多次判断(除非一开始条件就是错的)。

if语句属于条件判断语句,如果条件是true,则继续执行,为false则跳出语句不执行,只会进行单次判断。

while与if语句的最大的相同点是都有至少一步的判断。

参考链接:while和if的区别-优快云博客

Python中self用法详解

面向对象最重要的概念就是类(class)和实例(instance),类是抽象的模板,比如学生这个抽象的事物,可以用一个Student类来表示。而实例是根据类创建出来的一个个具体的“对象”,每一个对象都从类中继承有相同的方法,但各自的数据可能不同。

self在类中是必不可少的,它帮助类的方法识别并操作实例数据。

参考链接:Python中self用法详解_python self-优快云博客

参考链接:

理解Python的链表ListNode_python listnode-优快云博客

class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None

class Solution:
    def detectCycle(self, head):
        slow = head
        fast = head
        
        # 检查链表是否有环
        while fast and fast.next:
            fast = fast.next.next
            slow = slow.next
            
            # 找到快慢指针相遇的点
            if fast == slow:
                slow = head
                # 这里的作用是当fast和slow相等时,返回入环的第一个节点
                while fast != slow:
                    fast = fast.next
                    slow = slow.next
                return slow
        
        # 如果没有环,返回 None
        return None

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值