Leetcode 142. 环形链表 II

注意的点:

1、注意里面的判断条件,虽然代码少但是其实逻辑很多。

解法:快慢指针

python 复制代码
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def detectCycle(self, head: Optional[ListNode]) -> Optional[ListNode]:

        # 快慢指针
        slow, fast = head, head

        if not head: return None

        while fast.next and fast.next.next:
            slow = slow.next
            fast = fast.next.next
            if slow == fast: break # 得放在后面
        
        if not fast.next or not fast.next.next: 
            return None

        slow = head
        while slow != fast:
            slow = slow.next
            fast = fast.next

        return fast
            
相关推荐
狗头实习生几秒前
电话号码字母组合
java·算法·leetcode
C雨后彩虹7 分钟前
矩阵扩散问题
java·数据结构·算法·华为·面试
独自破碎E7 分钟前
力场重叠问题
java·开发语言·算法
free-elcmacom13 分钟前
机器学习入门<5>支持向量机形象教学:寻找最安全的“三八线”,人人都能懂的算法核心
人工智能·python·算法·机器学习·支持向量机
兔子零102429 分钟前
零硬件交互:如何用纯前端把摄像头变成 4000 个粒子的魔法棒?
前端·算法
AnAnCode30 分钟前
【时间轮算法】时间轮算法的详细讲解,从基本原理到 Java 中的具体实现
java·开发语言·算法·时间轮算法
sin_hielo30 分钟前
leetcode 3432
数据结构·算法·leetcode
fufu031136 分钟前
Linux环境下的C语言编程(三十七)
算法
风筝在晴天搁浅1 小时前
代码随想录 300.最长递增子序列
算法·动态规划