双指针部分的题都有一定的技巧,需要仔细思考一下。
题目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