c_cpp 查找两个链表是否相交。解决方案不应使用额外的内存
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 查找两个链表是否相交。解决方案不应使用额外的内存相关的知识,希望对你有一定的参考价值。
bool is_intersect(ListNode *h1, ListNode *h2) {
if(!h1 || !h2) return false;
if(h1 == h2) return true;
int len1 = 0, len2 = 0;
for(ListNode *p1 = h1; p1; p1 = p1->next) len1++;
for(ListNode *p2 = h2; p2; p2 = p2->next) len2++;
//if(len1 == len2) // equal length may still intersect! so this checking is wrong.
// return false;
ListNode *p = len1 > len2 ? h1 : h2;
ListNode *q = len1 > len2 ? h2 : h1;
int diff = abs(len1 - len2);
while(diff-- != 0) p = p->next;
while(p && q) {
if(p == q) return true;
p = p->next;
q = q->next;
}
return false;
}
以上是关于c_cpp 查找两个链表是否相交。解决方案不应使用额外的内存的主要内容,如果未能解决你的问题,请参考以下文章
c_cpp GFG如何检查两个给定的线段是否相交
拿捏链表—— 相交链表
1.11判断两个无环单链表是否相交
判断两个单向链表是否相交
java判断两个单链表是否相交
判断两条链表是否相交(公共部分)并找出相交处