题解 | #两个链表的第一个公共结点#

两个链表的第一个公共结点

https://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46

/*
struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) :
			val(x), next(NULL) {
	}
};*/
class Solution {
public:
	int ListLen(ListNode* p) {
		int n=0;
		while(p) {
			p=p->next;
			n++;
		}
		return n;
	}
    ListNode* FindFirstCommonNode( ListNode* head1, ListNode* head2) {
		ListNode* p1=head1;
		ListNode* p2=head2;
		int len1=ListLen(p1);
		int len2=ListLen(p2);
		int gap=0;
		if(len1>len2) {
			gap = len1-len2;
			while(gap--) {
				p1=p1->next;
			}
		}else{
			gap = len2-len1;
			while(gap--) {
				p2=p2->next;
			}
		}
		while(p1 && p2) {
			if(p1->val == p2->val) return p1;
			p1=p1->next;
			p2=p2->next;
		}
		return nullptr;
    }
};

全部评论

相关推荐

10-07 20:48
门头沟学院 Java
听说改名就会有offer:可能是实习上着班想到后面还要回学校给导师做牛马,看着身边都是21-25的年纪,突然emo了了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务