文章图片
文章图片
/**
* Definition for singly-linked list.
* struct ListNode {
*int val;
*ListNode *next;
*ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
ListNode* dheada = new ListNode(0);
ListNode* dheadb = new ListNode(0);
dheada->next = headA;
dheadb->next = headB;
ListNode* cur1 = dheada;
ListNode* cur2 = dheadb;
int cnt1 = 0, cnt2 = 0;
while (cur1 != NULL){
cur1 = cur1->next;
cnt1++;
}//查找链表1的长度
while (cur2 != NULL){
cur2 = cur2->next;
cnt2++;
}//查找链表2的长度
cur1 = dheada;
cur2 = dheadb;
while (cur1 != NULL || cur2 !=NULL){
if (cnt1 == cnt2){
if (cur1 == cur2){
return cur1;
}//查找相交点,指针相同而不是值相同
else {
cur1 = cur1->next;
cur2 = cur2->next;
}
}
else if (cnt1 > cnt2){
cur1 = cur1->next;
cnt1--;
}//调整到末端对齐
else {
cur2 = cur2->next;
cnt2--;
}
}
return NULL;
}
};
【c++|《每日一题》面试题 02.07. 链表相交】
推荐阅读
- 操作系统|快@你的好兄弟好姐妹来内卷进程状态
- Linux|我所理解的CPU中断
- 初学至学会C++|初阶C++—— 第三节—— 动态内存管理 初识模板
- 学习QT|QT的http封装类
- C++ STL Merge的用法
- c++|虚函数和多态性
- CCF-CSP|【手把手刷CCF】201809-2-买菜100分(含详细注释)
- OJ|阶乘分解 kkmd66
- 面经|美团后端一二面c++