两个链表的第一个公共结点
输入两个链表,找出它们的第一个公共结点。
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* FindFirstCommonNode( ListNode *pHead1, ListNode *pHead2) {
if(!(pHead1&&pHead2)) return nullptr;
int len1{0},len2{0};
for(ListNode *cur=pHead1;cur!=nullptr;cur=cur->next){
++len1;
}
for(ListNode *cur=pHead2;cur!=nullptr;cur=cur->next){
++len2;
}
ListNode *cur1=pHead1,*cur2=pHead2;//be careful *
if(len1>len2){
for(int i=0;i<len1-len2;++i){
cur1=cur1->next;
}
}
else if(len1<len2){
for(int i=0;i<len2-len1;++i){
cur2=cur2->next;
}
}
while(cur1!=cur2){//直接cur1!=cur2就可以了,指向结点的指针
cur1=cur1->next;
cur2=cur2->next;
}
return cur1;
}
};