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

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

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

//快慢指针,问题出在最后的return上 如果上述条件都不符合的话,返回空,这道题还可以用哈希表来做 unorderedmap
class Solution {
public:
	ListNode* FindFirstCommonNode(ListNode* pHead1, ListNode* pHead2) {
		ListNode* pTail1=pHead1;
		ListNode* pTail2=pHead2;
		ListNode* nFast, *nSlow;
		int len1=0, len2=0;
		while (pTail1)
		{
			pTail1 = pTail1->next;
			len1++;
		}
		while (pTail2)
		{
			pTail2 = pTail2->next;
			len2++;
		}
		if (len1 >= len2)
		{
			int i = len1 - len2;
			nFast = pHead1;
			nSlow = pHead2;
			while (i)
			{
				nFast = nFast->next;
				i--;
			}
		}
		else
		{
			int i = len2 - len1;
			nFast = pHead2;
			nSlow = pHead1;
			while (i)
			{
				nFast = nFast->next;
				i--;
			}
		}
		while (nFast)
		{
			if (nFast == nSlow)
				return nFast;
			nFast = nFast->next;
			nSlow = nSlow->next;
		}
		return NULL;
	}
};

全部评论

相关推荐

不愿透露姓名的神秘牛友
10-12 10:48
已编辑
秋招之苟:邻居家老哥19届双2硕大厂开发offer拿遍了,前几天向他请教秋招,他给我看他当年的简历,0实习实验室项目技术栈跟开发基本不沾边😂,我跟他说这个放在现在中厂简历都过不了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务