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

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

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

/*
struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) :
			val(x), next(NULL) {
	}
	该题仍然考的是双指针的考点,即快慢指针的考点;
};*/
class Solution {
public:

		size_t GetLength(ListNode* head) {
			size_t count = 0;
			while (head != nullptr) {
				++count;
				head = head->next;
			}
			return count;
		}


    ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) {
			auto count1 = GetLength(pHead1);
			auto count2 = GetLength(pHead2);

			auto OffsetHead = [](ListNode* head, int offset) {
				for (auto i = 0; i < offset; ++i)
					head = head->next;
				return head;
			};

			if (count1 > count2)
				pHead1 = OffsetHead(pHead1, count1 - count2);
			else if (count1 < count2)
				pHead2 = OffsetHead(pHead2, count2 - count1);

			while (pHead1 != pHead2 && pHead1 != nullptr) {
				pHead1 = pHead1->next;
				pHead2 = pHead2->next;
			}

			if (pHead1 != nullptr)
				return pHead1;
			else 
			  return nullptr;
    }
};

全部评论

相关推荐

程序员牛肉:主要是因为小厂的资金本来就很吃紧,所以更喜欢有实习经历的同学。来了就能上手。 而大厂因为钱多,实习生一天三四百的就不算事。所以愿意培养你,在面试的时候也就不在乎你有没有实习(除非是同级别大厂的实习。) 按照你的简历来看,同质化太严重了。项目也很烂大街。 要么换项目,要么考研。 你现在选择工作的话,前景不是很好了。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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