题干:
输入两个链表,找出它们的第一个公共节点。
思路:
首先根据示例可以发现有两个节点值相等的点,但是并不是公共节点,所以考虑比较的是整个节点,包括node.val,node.next以及node自带的一些信息包括该node在内存中的物理地址等等,所以比较的时候就是node比较,不是node.val比较
设置两个指针:第一个先遍历node1,再遍历node2
第二个先遍历node2,再遍历node1
当node1 = node2的时候就是相同节点
源码:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode:
'''
两个指针:第一个先遍历node1,在遍历node2
第二个先遍历node2,再遍历node1
当node1 = node2的时候就是相同节点
'''
node1 , node2 = headA , headB
while node1 != node2:
node1 = node1.next if node1 else headB
node2 = node2.next if node2 else headA
return node1
链接:
参考链接:剑指offer52:两个链表的第一个公共节点 python_哆啦小喵的博客-CSDN博客
原题链接: