Update 面试题02.07.链表相交.md

This commit is contained in:
jianghongcheng
2023-05-05 19:18:26 -05:00
committed by GitHub
parent 3b0000a280
commit 4224c17e54

View File

@ -214,7 +214,41 @@ class Solution:
return head return head
``` ```
```python ```python
版本三等比例法 版本三求长度同时出发 代码复用 + 精简
class Solution:
def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode:
dis = self.getLength(headA) - self.getLength(headB)
# 通过移动较长的链表,使两链表长度相等
if dis > 0:
headA = self.moveForward(headA, dis)
else:
headB = self.moveForward(headB, abs(dis))
# 将两个头向前移动,直到它们相交
while headA and headB:
if headA == headB:
return headA
headA = headA.next
headB = headB.next
return None
def getLength(self, head: ListNode) -> int:
length = 0
while head:
length += 1
head = head.next
return length
def moveForward(self, head: ListNode, steps: int) -> ListNode:
while steps > 0:
head = head.next
steps -= 1
return head
```
```python
版本四等比例法
# Definition for singly-linked list. # Definition for singly-linked list.
# class ListNode: # class ListNode:
# def __init__(self, x): # def __init__(self, x):