编写一个程序,找到两个单链表相交的起始节点。
160.相交链表
160.相交链表
160.相交链表
160.相交链表
注意:

  • 如果两个链表没有交点,返回 null.
  • 在返回结果后,两个链表仍须保持原有的结构。
  • 可假定整个链表结构中没有循环。
  • 程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。

双指针

  • A 为链表A的非公共部分
  • B 为链表B的非公共部分
  • C 为公共部分 (可能为空)

则 A + C + B == B + C + A

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution(object):
    def getIntersectionNode(self, headA, headB):
        """
        :type headA, headB: ListNode
        :rtype: ListNode
        """
        
        i = headA
        j = headB
        
        while i != j:
            
            if i is None:
                i = headB
            else:
                i = i.next
                
            if j is None:
                j = headA
            else:
                j = j.next
                
        return i
        

相关文章:

  • 2022-01-17
  • 2022-12-23
  • 2022-01-15
  • 2022-12-23
  • 2021-07-14
  • 2021-11-28
  • 2021-11-23
猜你喜欢
  • 2022-01-12
  • 2021-09-10
  • 2021-10-10
  • 2021-12-02
  • 2021-12-23
相关资源
相似解决方案