题解 | #暴力求解——两个链表的第一个公共结点#

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

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

/*
struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) :
			val(x), next(NULL) {
	}
};*/
/*计算出两个链表的长度差,让长的链表的指针指像和短的链表指针指向起始步长一样*/
class Solution {
public:
    ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) {
        ListNode *p =pHead1;
		ListNode *p1 = pHead1;
		ListNode *p2 = pHead2;
		int len1 = 0;
		int len2 = 0;
		while (p!=nullptr) {
			len1++;
			p = p->next;
		}
		p=pHead2;
		while (p!=nullptr) {
			len2++;
			p = p->next;
		}
		int len = len1 >= len2 ? (len1 - len2) : (len2 - len1);
		if(len1 >= len2){
			for(int i =0;i<len;i++){p1 = p1->next;}
			while (p1 !=nullptr && p2 != nullptr && p1 != p2) {
				p1 = p1->next;
				p2 = p2->next;
			}
		}else {
			for(int i=0;i<len;i++){p2 = p2->next;}
			while (p1 != nullptr && p2!=nullptr &&p1!=p2) {
				p1 = p1->next;
				p2 = p2->next;
			}
		}
		return p1;
    }
};

全部评论

相关推荐

不愿透露姓名的神秘牛友
05-25 18:29
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-15 17:09
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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