一、双指针
Time:O(m+n) 52ms
m:链表A的长度 n:链表B的长度
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* //结构体的有参构造 冒号后使初始化的操作
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
ListNode * a=headA;
ListNode * b=headB;
while(a!=b){
//若a不为空,a指向B数组,否则a指向下一个
a=a==nullptr?headB:a->next;
b=b==NULL?headA:b->next;
}
//最后a和b重合,代表找到了相交处,包括相交为空。返回任意一个
return a;
}
};
本文介绍了一种使用双指针的方法来寻找两个链表中相交节点的高效算法,通过对比两个链表的前进速度,最终找到它们的公共节点。时间复杂度为O(m+n),适用于链表操作问题解决。
549

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



