Leetcode160.相交链表

链接

第一次错误提交:

cpp 复制代码
class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        int lena = 1,lenb = 1;
        ListNode* p = headA->next;
        while(p){p = p->next;++lena;}
        ListNode* q = headB->next;
        while(q){q = q->next;++lenb;}
        if(lena>lenb){
            p = headA;
            q = headB;
        }
        else{
            p = headB;
            q = headA;
        }
        int interval = (lena>lenb)?(lena-lenb):(lenb-lena);
        while(interval--){
            p = p->next;
        }
        while(p && q && (p->val)!=(q->val)){
            p = p->next;
            q = q->next;
        }
        return p?p:nullptr;        
    }
};

我忽略了有可能两个节点值相同,但是位置不同的情况;

第二次错误提交:

cpp 复制代码
class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        int lena = 1,lenb = 1;
        ListNode* p = headA->next;
        while(p){p = p->next;++lena;}
        ListNode* q = headB->next;
        while(q){q = q->next;++lenb;}
        if(lena>lenb){
            p = headA;
            q = headB;
        }
        else{
            p = headB;
            q = headA;
        }
        int interval = (lena>lenb)?(lena-lenb):(lenb-lena);
        while(interval--){
            p = p->next;
        }
        while(p && q && (&p)!=(&q)){
            p = p->next;
            q = q->next;
        }
        return p?p:nullptr;        
    }
};

这次我知道比较地址而不是值了,结果对ListNode*取地址了,即:我想要比较两个指针指向的内容是否同一地址,结果比较了两个指针的地址是否同一地址。

第三次正确提交:

cpp 复制代码
class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        int lena = 1,lenb = 1;
        ListNode* p = headA->next;
        while(p){p = p->next;++lena;}
        ListNode* q = headB->next;
        while(q){q = q->next;++lenb;}
        if(lena>lenb){
            p = headA;
            q = headB;
        }
        else{
            p = headB;
            q = headA;
        }
        int interval = (lena>lenb)?(lena-lenb):(lenb-lena);
        while(interval--){
            p = p->next;
        }
        while(p && q && p!=q){
            p = p->next;
            q = q->next;
        }
        return p?p:nullptr;        
    }
};

晚上复习这个题,结果犯了一个很低级的错误:
初始化lena lenb时,我写成了这样:

cpp 复制代码
int lena,lenb = 1;

显然lena是一个随机值。

相关推荐
hz_zhangrl41 分钟前
CCF-GESP 等级考试 2025年12月认证C++二级真题解析
c++·算法·gesp·gesp2025年12月·c++二级
一起搞IT吧1 小时前
相机拍照无响应问题分析一:【MEMORY_NOT_ENOUGH导致】持续快拍,一会儿无法拍照了
android·c++·数码相机·智能手机
量子炒饭大师1 小时前
Cyber骇客的层级霸权——【优化算法】之【排序算法】堆排序
c语言·c++·算法·排序算法
UP_Continue1 小时前
C++11--引言折叠与完美转发
开发语言·c++
cpp_25011 小时前
P8597 [蓝桥杯 2013 省 B] 翻硬币
数据结构·c++·算法·蓝桥杯·题解
人邮异步社区1 小时前
C++之父的《C++程序设计语言》(第4版)重译出版!
java·jvm·c++
墨有6661 小时前
C++ 模板入门:从函数模板到类模板
c++
郝学胜-神的一滴2 小时前
Python类型检查之isinstance与type:继承之辨与魔法之道
开发语言·数据结构·python·程序人生
浅川.252 小时前
STL专项:vector 变长数组
c++·stl·vector
不忘不弃2 小时前
把IP地址转换为字符串
数据结构·tcp/ip·算法