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

代码随想录 链表 test 6

面试题 02.07. 链表相交 - 力扣(LeetCode)

        如果两个链表相交,则它们从交点开始到结束共用结点,因此如果两个链表长度不一样,且存在差值len,那么这个差值一定是在交点前产生的,因此如果让指向表长的指针先移动len,再同步移动,如果有交点就会同时到达。

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        ListNode* cura = headA;
        ListNode* curb = headB;
        int sizea = 0, sizeb = 0;
        while(cura){
            sizea++;
            cura = cura->next;
        }
        while(curb){
            sizeb++;
            curb = curb->next;
        }
        cura = headA;
        curb = headB;
        if (sizeb > sizea) {//找到较长的链表,将cura指向较长链表
            swap (sizea, sizeb);
            swap (cura, curb);
        }
        int len = sizea - sizeb;
        while(len--){
            cura = cura->next;
        }
        while(cura){
            if(cura == curb){
                return cura;
            }
            cura = cura->next;
            curb = curb->next;
        }
        return NULL;
    }
};


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

相关文章:

  • 上门按摩系统架构与功能分析
  • iOS - AutoreleasePool
  • 单片机实现模式转换
  • 经典多模态模型CLIP - 直观且详尽的解释
  • 审计表UNIFIED_AUDIT_TRAIL出现YAS-00220 utf8 sequence is wrong
  • Flutter Web 中文字体显示异常问题
  • 东京大学联合Adobe提出基于指令的图像编辑模型InstructMove,可通过观察视频中的动作来实现基于指令的图像编辑。
  • Selenium 进行网页自动化操作的一个示例,绕过一些网站的自动化检测。python编程
  • 『 Linux 』高级IO (三) - Epoll模型的封装与EpollEchoServer服务器
  • C#里对已经存在的文件进行压缩生成ZIP文件
  • FPGA车牌识别
  • 基于需求文档、设计文档、测试用例的测试答疑助手
  • 用Portainer实现对Docker容器的管理(四)
  • 深度学习与计算机视觉 (博士)
  • 【JAVA基础】Collections方法的具体使用方法
  • 计算机网络 笔记 物理层
  • 【递归与分治】Leetcode23:合并K个升序链表
  • Redis--20--大Key问题解析
  • Mono里运行C#脚本26—CEE_ADD/MONO_CEE_ADD/OP_IADD/X86_ADD的转换过程
  • java项目学科竞赛管理系统的设计与实现源码(springboot+mysql+vue)
  • 预训练语言模型——BERT
  • 【免费】2000-2019年各省技术市场成交额数据
  • 字玩FontPlayer开发笔记9 Tauri2打包应用
  • Golang的并发编程框架比较
  • ASP.NET Core实现微服务--什么是微服务
  • Java语法总结