感觉LeetCode的简单、中等、困难这三个等级是按照代码的复杂程度,以及好记程度来的。。。。
# -*- coding: utf-8 -*-
"""
@File : intersection_node.py
@Author: zhang_san
@Time : 2020/8/27 20:43
@des : 一种比较巧妙的方式是,分别为链表A和链表B设置指针A和指针B,然后开始遍历链表,如果遍历完当前链表,则将指针
指向另外一个链表的头部继续遍历,直至两个指针相遇。
最终两个指针分别走过的路径为:
指针A :a+c+b
指针B :b+c+a
明显 a+c+b = b+c+a,因而如果两个链表相交,则指针A和指针B必定在相交结点相遇。
"""
from linked_list import ListNode, generateList, printList
class Solution:
def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode:
p1 = headA
p2 = headB
if p1 is None or p2 is None:
return None
while p1 != p2:
if p1 is None:
p1 = headB
else:
p1 = p1.next
if p2 is None:
p2 = headA
else:
p2 = p2.next
return p1