题目:
class Solution {
public:
ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
if(!headA||!headB)return NULL;
int num1=0,num2=0,diff=0;
ListNode* curA=headA;
ListNode* curB=headB;
while(curA){ //计算链表长度差的时候要用cur,不可以直接用head,因为后面找相交节点的时候要从head开始找
num1++;
curA=curA->next;
}
while(curB){
num2++;
curB=curB->next;
}
diff=abs(num1-num2);
if(num1>num2){
while(diff){
headA=headA->next;
diff--;
}
}
else if(num1<num2){ //让尾部对齐,即将长的链表的头指针移动到与短链表头指针对齐的位置
while(diff){
headB=headB->next;
diff--;
}
}
while(headA){
if(headA==headB) return headA;
else{
headA=headA->next;
headB=headB->next;
}
}
return NULL;
}
};
分类:
算法编程
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具