一、题目:
描述
输入两个无环的单链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)
二、输入输出示例:
三、代码:
这个代码是返回所有的重复结点,而题目要求是返回第一个重复结点,题目的略微简单一些
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) {
ListNode *res = new ListNode(0);
ListNode *temp1 = res;
ListNode *temp2 = pHead2;
while(pHead1 != NULL){
while(temp2 != NULL){
if(pHead1 == temp2){
temp1->next = pHead1;
temp1 = temp1->next;
break;
}
temp2 = temp2->next;
}
pHead1 = pHead1->next;
temp2 = pHead2;
}
return res->next;
}
};
返回第一个重复结点代码:
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) {
ListNode *res = new ListNode(0);
ListNode *temp1 = res;
ListNode *temp2 = pHead2;
int flag = 0;
while(pHead1 != NULL){
while(temp2 != NULL){
if(pHead1 == temp2){
flag = 1;
break;
}
temp2 = temp2->next;
}
if(flag == 1){
break;
}
pHead1 = pHead1->next;
temp2 = pHead2;
}
return pHead1;
}
};