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是一个随机值。

相关推荐
努力写代码的熊大3 分钟前
单链表和双向链表
数据结构·链表
小刘同学3219 分钟前
C++11 特性
c++·c11新特性
真的想上岸啊23 分钟前
学习C++、QT---18(C++ 记事本项目的stylesheet)
开发语言·c++·学习
m0_5522008227 分钟前
《UE5_C++多人TPS完整教程》学习笔记40 ——《P41 装备(武器)姿势(Equipped Pose)》
c++·游戏·ue5
Orlando cron1 小时前
数据结构入门:链表
数据结构·算法·链表
丁劲犇1 小时前
用 Turbo Vision 2 为 Qt 6 控制台应用创建 TUI 字符 MainFrame
开发语言·c++·qt·tui·字符界面·curse
charlie1145141912 小时前
深入理解Qt的SetWindowsFlags函数
开发语言·c++·qt·原理分析
呜喵王阿尔萨斯2 小时前
编程中的英语
c语言·c++
whoarethenext3 小时前
使用 C++/Faiss 加速海量 MFCC 特征的相似性搜索
开发语言·c++·faiss
向阳@向远方4 小时前
第二章 简单程序设计
开发语言·c++·算法