jz23专题

[牛客网刷题 Day4] JZ23 链表中环的入口结点

题目描述: 思考: 建立一个list,存储节点,出现重复,就返回。 class Solution:def EntryNodeOfLoop(self, pHead):if pHead is None or pHead.next is None:return Nonemem = []while pHead not in mem:mem.append(pHead)pHead = pHead.n

[牛客网刷题 Day3] JZ23 链表中倒数最后k个结点

题目描述: 思考: 记录下链表总长度,算出总长度,再从前往后遍历。 class Solution:def FindKthToTail(self , pHead: ListNode, k: int) -> ListNode:# write code herelen = 0dummy = pHeadwhile pHead:len = len +1pHead=pHead.nextif k>le

JZ23链表中环的入口结点

JZ23链表中环的入口结点 思路: 采用双指针,设定快指针fast_p是慢指针slow_p的2倍,如果有环,则当两指针第一次相遇时慢指针一定不可能在环中走超过一圈,因此假设头结点到环的开头距离为a,环开头到第一次相遇节点的距离为b,第一次相遇到环开头距离为c,因此快指针fast_p走过的距离=a + (b+c)k +b (k为大于1的正整数),慢指针slow_p走过的距离= a + b