当前位置: 首页 > article >正文

Leetcode160.相交链表

链接

第一次错误提交:
 

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;        
    }
};

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

第二次错误提交:
 

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*取地址了,即:我想要比较两个指针指向的内容是否同一地址,结果比较了两个指针的地址是否同一地址。

第三次正确提交:

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时,我写成了这样:

int lena,lenb = 1;

显然lena是一个随机值。 


http://www.kler.cn/a/398785.html

相关文章:

  • 正则表达式语法详解(python)
  • stdin文件流指针
  • 类与对象;
  • 【操作系统实验课】Makefile与编译
  • 【windows笔记】08-Windows中的各种快捷方式、符号链接、目录联接、硬链接的区别和使用方法
  • Notepad++的完美替代
  • PyTorch——从入门到精通:PyTorch基础知识(张量)【PyTorch系统学习】
  • React Native 全栈开发实战班 - 图片加载与优化
  • MCU的时钟体系
  • spring-data-elasticsearch 3.2.4 实现桶bucket排序去重,实现指定字段的聚合搜索
  • Adobe Illustrator(Ai)修图软件入门操作参考,收集查过的各个细节用法
  • 第十六届蓝桥杯模拟赛(第一期)-c++/c
  • [Qt platform plugin问题] Could not load the Qt platform plugin “xcb“
  • CSS优化file控件样式
  • 【动手学深度学习Pytorch】1. 线性回归代码
  • [CKS] 执行Pod安全标准
  • 酒水分销积分商城小程序开发方案php+uniapp
  • go module使用
  • 使用win32com将ppt(x)文件转换为pdf文件
  • 【windows】校园网AP隔离解决方案笔记-解决校内设备之间无法互相通信的臭毛病-附破解程序
  • CC2学习记录
  • Rust: 原子操作大全
  • antdesign对话框输出html格式
  • RHCE的学习(21)
  • Nuget For Unity插件介绍
  • Hadoop的汽车销量数据分析系统