题目描述:输入两个链表,找出它们的第一个公共节点。



解题思路:一直走一直走直到两个节点相等不断循环遍历两个链表终有一次会相遇。
代码:
/**
* 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*node1=headA;
ListNode*node2=headB;
while(node1!=node2){
node1 = node1 != NULL ? node1->next:headB;
node2 = node2 != NULL ? node2->next:headA;
}
return node1;
}
};
本文介绍了一种寻找两个链表第一个公共节点的有效算法。通过同时遍历两个链表,当到达链表末尾时切换到另一个链表的头部,最终在某一点两指针会相遇,即为交点。
357

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



