双指针部分的题都有一定的技巧,需要仔细思考一下。
题目1:





思路:
因为要找第一个相交结点,第一时间想到的就是使用set完成,但是使用set就不会满足空间复杂度为O(1)的要求;所以想到用双指针比较巧妙的一个思想:



# 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 head1, head1: ListNode
:rtype: ListNode
"""
a, b = headA, headB
while a != b:
a = a.next if a else headB # 注意这里的判断条件是a,保证了没有交点的时候这个逻辑也是对的
b = b.next if b else headA
return a

本文探讨了一种使用双指针解决链表相交问题的策略,通过不断移动两个指针直到它们相遇,实现了空间复杂度为O(1)的解决方案。在给定的Python代码中,当链表不相交时,指针会重新从另一个链表头部开始,确保了正确处理所有情况。
106

被折叠的 条评论
为什么被折叠?



