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

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

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

全部评论

相关推荐

03-26 22:55
门头沟学院 Java
烤冷面在迎接:河南byd,应该就是郑大了。不过24届计算机是特殊情况,那年除了九✌和强2,以及两三个关系够硬的双非,其他的都是炮灰,感觉是十几年来互联网行业最烂的一年,如果想了解最新的就业情况,得找现在的大四。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务