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

day4 找到两个链表的交点

ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        ListNode* curA = headA;
        ListNode* curB = headB;
        int lenA = 0, lenB = 0;

        while (curA != NULL) { // 求链表A的长度
            lenA++;
            curA = curA->next;
        }
        while (curB != NULL) { // 求链表B的长度
            lenB++;
            curB = curB->next;
        }

        curA = headA;
        curB = headB;

        // 让curA为最长链表的头,lenA为其长度
        if (lenB > lenA) {
            swap (lenA, lenB);
            swap (curA, curB);
        }
        // 求长度差
        int gap = lenA - lenB;
        // 让curA和curB在同一起点上(末尾位置对齐)
        while (gap--) {
            curA = curA->next;
        }
        // 遍历curA 和 curB,遇到相同则直接返回
        while (curA != NULL) {
            if (curA == curB) {
                return curA;
            }
            curA = curA->next;
            curB = curB->next;
        }
        return NULL;
    }

 


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

相关文章:

  • Redis知识点整理 - 脑图
  • C#从入门到放弃
  • Elasticsearch集群和Kibana部署流程
  • 【LeetCode】【算法】5. 最长回文子串
  • 23种设计模式的Flutter实现第一篇创建型模式(一)
  • CSP/信奥赛C++语法基础刷题训练(8):洛谷P5718:找最小值
  • 用友U8 ERP和面粉行业专版系统接口集成方案
  • 国产AI边缘计算盒子,双核心A55丨2.5Tops算力
  • 怎么用SSH远程连接Ubuntu服务器
  • 【Unity动画】状态机添加参数控制动画切换(Animator Controller)
  • C# WPF上位机开发(计算器界面设计)
  • Oracle连接和使用
  • Java高级技术-反射
  • 02_线程通信与线程池
  • H265、VP9、AV1视频编码器性能对比
  • 22.Oracle中的临时表空间
  • 短线买入卖出有哪些交易技巧?
  • Sailfish OS 移动操作系统
  • C/C++内存管理(含C++中new和delete的使用)
  • 优化机器学习:解析数据归一化的重要性与应用
  • Git 合并冲突解决步骤
  • Simple_SSTI_1-WEB-bugku-解题步骤
  • 实时流式计算 kafkaStream
  • 第8关:定义一个名为PROC_AVGWEIGHT的有参数存储过程
  • ubuntu22.04离线手动安装openstack yoga和ceph quincy
  • 西南科技大学C++程序设计实验三(类与对象二)