题目描述
题目链接:https://leetcode.cn/problems/intersection-of-two-linked-lists/description/



题目与思路分析
目标分析:
- 给定两个单链表的头节点
headA和headB,找出并返回两个单链表相交的起始节点。 - 如果两个链表不存在相交节点,返回
nullptr。 - 提高要求:时间复杂度为
O(m + n),空间复杂度为O(1),其中m和n分别为两个链表的长度。
思路一:暴力解法
思路:两层循环遍历链表 A 和链表 B,将链表 A 中的每个结点的地址都和链表 B 中的每个结点的地址进行比较,如果地址相等,则相交。
操作:
ListNode* curNode1 = headA, *curNode2 = headB:curNode1和curNode2分别用于迭代遍历两个链表。- 链表 A 中的每个节点需要和链表 B 中的每个结点进行比较。
curNode1 == curNode2时:代表是相交的结点,返回当前结点即可。else:内层循环中,curNode2移向下一个节点。
- 内层循环结束一轮后:
- 链表 A 的
curNode1向后移动:curNode1 = curNode1->next。 - 链表 B 的迭代结点回到链表 B 的头结点,准备进行下一轮遍历:
curNode2 = headB;。
- 链表 A 的
- 循环内没有
return时,代表没有相交。循环结束后return nullptr;。 - 时间复杂度
O(n^2),空间复杂度 。



