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

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

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) {
		int l1 = 0, l2 = 0;
		ListNode* temp1 = pHead1, *temp2 = pHead2;
		while (temp1 || temp2) {
			if(temp1){
				temp1 = temp1->next;
				l1++;
			}
			if(temp2){
				temp2 = temp2->next;
				l2++;
			}
			
		}

		if(l1 >= l2){
			temp1 = pHead1; temp2 = pHead2;
			for(int i=0; i < l1 - l2; i++){
				temp1 = temp1->next;
			}

			while (temp2) {
				if(temp1 == temp2) break;
				temp2 = temp2->next;
				temp1 = temp1->next;
			

			}

		}else {
			temp1 = pHead1; temp2 = pHead2;
			for(int i=0; i < l2 - l1; i++){
				temp2 = temp2->next;
			}
			while (temp1) {
				if(temp1 == temp2) break;
				temp2 = temp2->next;
				temp1 = temp1->next;	
			}

		}


		return temp1;


        
    }



};

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务