zoukankan      html  css  js  c++  java
  • Leetcode练习(Python):链表类:第142题:环形链表 II:给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 说明:不允许修改给定的链表。

    题目:
    环形链表 II:给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。  为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。  说明:不允许修改给定的链表。 
    进阶:
    你是否可以不用额外空间解决此题?
    思路:
    环形链表的常用阶梯思路,使用快慢指针,快指针是慢指针速度的两倍,然后寻找是否成环,成环之后将快指针放到原地,将慢指针重回开始位置,按照正常的速度进行寻找,可以找到成环点。
    程序:
    # Definition for singly-linked list.
    # class ListNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.next = None

    class Solution:
        def detectCycle(self, head: ListNode) -> ListNode:
            if not head:
                return None
            if not head.next:
                return None
            index1 = head
            index2 = head
            while index2 and index2.next:
                index1 = index1.next
                index2 = index2.next.next
                if index1 == index2:
                    break
            if index1 != index2:
                return None
            index1 = head
            while index1 != index2:
                index1 = index1.next
                index2 = index2.next
            return index1
  • 相关阅读:
    UVA 11925 Generating Permutations 生成排列 (序列)
    UVA 1611 Crane 起重机 (子问题)
    UVA 11572 Unique snowflakes (滑窗)
    UVA 177 PaperFolding 折纸痕 (分形,递归)
    UVA 11491 Erasing and Winning 奖品的价值 (贪心)
    UVA1610 PartyGame 聚会游戏(细节题)
    UVA 1149 Bin Packing 装箱(贪心)
    topcpder SRM 664 div2 A,B,C BearCheats , BearPlays equalPiles , BearSorts (映射)
    UVA 1442 Cave 洞穴 (贪心+扫描)
    UVA 1609 Foul Play 不公平竞赛 (构(luan)造(gao)+递归)
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12821068.html
Copyright © 2011-2022 走看看