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

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

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

/*
struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) :
			val(x), next(NULL) {
	}
};*/
//两套嵌套while循环解决,第一个while判断phead1是否等于第二个链表此时的头结点,第二个while让phead1右移
class Solution {
public:
    ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) {
        if(pHead1==nullptr||pHead2==nullptr){return nullptr;}//若链表1和2中有空,则没有交点
		while(pHead1){
			ListNode* p=pHead2;//令p代替phead2去遍历,因为每次判断都要从phead2的头部开始
			while(p){
				if(p==pHead1)//找到相交的点就返回
				return p;
				else p=p->next;//否则继续遍历第二个链表
			}
			pHead1=pHead1->next;//第一个链表判断过的点不用在看了,右移
		}
		return nullptr;//都没有,返回空
    }
};

全部评论

相关推荐

点赞 评论 收藏
分享
01-07 11:46
Java
如图:也是让我遇到逆天公司了,实习生是按天给工资,不忙直接强制休假了
baskly:公司为北京超图软件股份有限公司武汉分公司,明年公司应该会招新实习生,刷到的小伙伴快跑
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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