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

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

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;
    }
};

全部评论

相关推荐

06-23 11:43
门头沟学院 Java
allin校招的烤冷...:我靠,今天中午我也是这个hr隔一个星期发消息给我。问的问题还是一模一样的😅
点赞 评论 收藏
分享
程序员小白条:你是沟通了900个,不是投了900份简历,你能投900份,意味着对面都要回复你900次,你早就找到实习了,没亮点就是这样的,别局限地区,时间投的也要早,现在都要7月了
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务