02.07_两个链表相交

2023-11-09

给你两个单链表的头节点 headAheadB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null

解法一:如果两个链表有相交,那么从后面看一定是相同的,所以只需要把长的移动到和短的链表一样的长度开始遍历即可

class Solution {
public:
    ListNode* getIntersectionNode(ListNode* headA, ListNode* headB) {
        ListNode* cur1 = headA;
        ListNode* cur2 = headB;
        int l1 = 0, l2 = 0;

        // 求出两个链表长度
        while (cur1 != NULL) {                  
            l1++;
            cur1 = cur1->next;
        }
        while (cur2 != NULL) {
            l2++;
            cur2 = cur2->next;
        }

        // 此时 cur1 cur2 都指向空,所以要把他们指向 head
        cur1 = headA;
        cur2 = headB;

        // 把长的设置成1
        if (l1 < l2) {        
            swap(l1, l2);
            swap(cur1, cur2);
        }

        // 把长的移动到和短的一样的位置
        int l = l1 - l2;
        while (l--) {
            cur1 = cur1->next;
        }

        // 从相等处开始遍历
        while (cur1 != NULL) {
            if (cur1 == cur2) {
                return cur1;
            }
            cur1 = cur1->next;
            cur2 = cur2->next;
        }

        return NULL;
    }
};

解法二:太强了,暂时理解不了

class Solution {
public:
    ListNode* getIntersectionNode(ListNode* headA, ListNode* headB) {
        ListNode* cur1 = headA;
        ListNode* cur2 = headB;

        while (cur1 != cur2) {
            cur1 = cur1 != nullptr ? cur1->next : headB;
            cur2 = cur2 != nullptr ? cur2->next : headA;
        }
        return cur1;
    }
};

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

02.07_两个链表相交 的相关文章

  • Android compileSdkVersion 升级到33

    compileSdkVersion minSdkVersion 和 targetSdkVersion 1 minSdkVersion 应用兼容的SDK API最低版本 若手机系统低于minSdkVersion将无法安装 AndroidStu
  • MYSQL字符串大小写 缺省行为

    今天遇到一个主键冲突的文件 我看两条记录的主键明明不一样 一条是大写的JAA 另外一条是小写的jaa 莫灰是mysql对字段的值不区分大小写 在网上查了一下 还真是 默认情况下 找了一篇文章 摘自 http www oklinux cn h

随机推荐

  • Starting the Docker Engine...一直转圈

    真是服了 网上一大堆解决教程 不管咋样就是转圈 就是打不开 好家伙 原来是要登录账号才行 奶奶的 账号以登录 立马就OK了 白费我好大的心血和时间 右上角 登录账号
  • VS Code快捷键MAC环境(持续更新)

    VS Code内打开终端 ctrl
  • hbuilder打包ios所需的IDP/IEP证书创建流程

    在uniapp开发进行云打包的时候 打包Ios应用需要IDP IEP证书和证书profile文件 无论使用windows电脑 还是mac电脑 生成ios证书 需要苹果开发者账号 假如你还没有苹果开发者账号 你可以参考下文先到苹果开发者中心开
  • 微信公众号订阅通知介绍

    功能介绍 订阅通知是一个用户主动订阅 服务号按需下发的通知能力 使用过程请遵守 微信公众平台服务协议 微信公众平台运营规范 如有疑问 可在微信开放社区反馈 设置订阅功能 服务号可以在图文消息 网页等场景设置订阅功能 下发条件 用户在前述场景
  • mybatis 自动填充无效_mybatis-plus3.3.0自动填充方法有改变?

    源自 mybatis plus3 3 0自动填充方法有改变 Slf4j Component public class MyMetaObjectHandler implements MetaObjectHandler Override pub
  • git 服务器 文件目录结构,查看Jenkins 服务器上的目录结构

    1 很多同学 不太清楚 默认的Jenkins安装后 文件在服务器 的哪个目录 其实 大家随便构建一个JOB 看 控制台输出 是的 Jenkins的所有文件 存储在 root jenkins这个文件夹 2 通过xshell等工具 进入 jen
  • 网页设计规范 网页设计稿尺寸

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 移动端H5设计稿尺寸 移动端H5尺寸 设计移动端 H5 项目的时候 我们一般以用户量较高的 iPhone6 7 8的尺寸 750x1334px为准 然后我们要在顶部预留出微
  • Native memory allocation (mmap) failed to map 6215958528 bytes for committing reserved memory

    今天突然发现es报错 无法正常启动 报错信息如下 Exception in thread main java lang RuntimeException starting java failed with 1 output There is
  • 【微信小程序入门到精通】— 渲染列表的详细方法

    目录 前言 一 引入 wx for 1 1 wx for 语法结构 1 2 wx for 实例 二 wx key 应用 总结 前言 对于目前形式 微信小程序是一个热门 那么我们该如何去学习并且掌握之后去做实际项目呢 为此我特意开设此专栏 在
  • CVE-2021-3493漏洞复现案例(提权)

    下面复现需要在虚拟机中完成 CVE 2021 3493漏洞案例 可以在下面链接下载关于该漏洞的代码脚本 https github com inspiringz CVE 2021 3493 1 攻击工具及环境说明 在虚拟机上完成 Ubuntu
  • 【已更新】2023mothercup妈妈杯D题数学建模挑战赛思路代码-航空安全风险分析和飞行技术评估问题

    我们来看下D题 这道题是一道数据分析类题目 总共有五个小问 第一题是要求我们针对附件1的数据质量开展可靠性研究 提取与飞行安全相关的部分关键数据项 并对数据项的重要程度进行分析 第一步是对数据的可靠性分析 数据质量的可靠性研究主要包括数据完
  • win32 socket编程 示例(功能简单,完善)

    最近在做的一个项目要用到网络通信方面的内容 于是自学了下win32socket 原来自己学过计算机网络 只了解网络各层的原理 但没有真正的编程来实现这些原理 哎 不过现在还来得及 下面是自己的一个示例 虽然简单 但了解了它 就知道了最基本的
  • Idea 学生认证

    Idea 学生认证 具体步骤 认证地址 操作如图 具体步骤 认证地址 https www jetbrains com community education students 操作如图 学生邮箱会收到来信 认证完成
  • linux常用命令笔记(二)

    2020 03 18 一 echo 1 原文输出 双引号可加可不加 echo hello world echo hello world 2 输出变量的值 echo 变量名 echo PATH 输出环境变量PATH的值 注意 linux环境变
  • 每一代内存的读写速度大概是多少?

    每一代内存的读写速度大概是多少 原文 https zhidao baidu com question 1797460631148535467 html 内存 有核心频率 I O频率 等效频率 最后由等效频率而算出带宽 带宽就等于内存的速度
  • vite+react+ts+eslint+prettier构建react开发项目

    目录 一 构建项目 二 安装eslint和prettier的依赖 三 修改 eslintrc cjs 创建 prettierrc cjs 1 eslintrc cjs文件配置 2 prettierrc cjs文件配置 三 将错误显示在页面上
  • 蓝桥杯嵌入式CT117E-M4学习笔记08-串口通信实验

    文章目录 前言 一 实验原理 二 配置步骤 三 串口发送 1 直接使用HAL USART Transmit发送 2 使用重定向prtinf函数发送 四 串口接收 总结 前言 本节我们学习开发板的串口通信 一 实验原理 1 串口通信原理 详见
  • 浏览器的渲染机制、提升页面性能、错误监控上报

    js运行机制 微任务队列 事件循环 单线程 错误监控 CSRF防范 css盒模型 Dom事件 原型链
  • 接口测试工具-apipost

    apiost Postman Swagger Mock 功能特色 实现多人实时协作 接口自动化测试 选择接口 组成流程 执行流程 基于接口创建在线文档可分享 官网 Apipost API 文档 调试 Mock 测试一体化协作平台 API列表
  • 02.07_两个链表相交

    给你两个单链表的头节点 headA 和 headB 请你找出并返回两个单链表相交的起始节点 如果两个链表没有交点 返回 null 解法一 如果两个链表有相交 那么从后面看一定是相同的 所以只需要把长的移动到和短的链表一样的长度开始遍历即可