Leetcode 160. 相交链表 解题思路及C++实现

2023-11-18

解题思路:

先将两个链表构建成一个环,定义两个快慢指针,当它们相遇时,将fast指针从头结点往后遍历,每次走一步,当这两个指针再次相遇时,该节点就是相交节点。

 

/**
 * 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) {
        if(!headA || !headB) return NULL;
        //先将两个链表连起来,构造一个环
        ListNode* tmp = headA;
        while(tmp && tmp->next)
            tmp = tmp->next;
        tmp->next = headB;
        
        //headA作为链表的头结点
        ListNode* slow = headA;
        ListNode* fast = headA;
        while(fast && fast->next){
            slow = slow->next;
            fast = fast->next->next;
            if(slow == fast) break;
        }
        if(!fast || !fast->next) {
            tmp->next = NULL; //把链表结构复原
            return NULL; //没有相交节点
        }
        
        //让fast指针指向头结点
        fast = headA;
        while(fast != slow){
            // cout<< slow->val;
            slow = slow->next;
            fast = fast->next;
        }
        tmp->next = NULL; //把链表结构复原
        return fast;
    }
};

 

 

 

 

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

Leetcode 160. 相交链表 解题思路及C++实现 的相关文章

  • Open Source Game Clones

    Open Source Game Clones This site tries to gather open source reimplementations of great old games in one place If you t

随机推荐

  • 微信开发者工具重定向(请求接口307)问题

    问题描述 在项目中勾选不校验http请求 发起http请求 会出现http请求自动转成了https请求 如图所示请求失败 这是因为微信开发者工具重定向导致的 解决方法 将微信开发者工具账号的配置清空 删除C盘微信开发者工具User Data
  • 解决ElementUI table表格的边框隐藏

    解决ElementUI table表格的边框隐藏 发现问题 解决 写在最后 发现问题 我方产品将于五秒后到达战场 刚在对照原型做项目的时候突然发现了这样一个表格 产品说他的这个数据表表格不要周边的边框 但是中间要边框分隔 嗯 这是什么需求
  • python语言核心技术_python核心技术

    基本语法 Python的设计目标之一是让代码具备高度的可阅读性 它设计时尽量使用其它语言经常使用的标点符号和英文单字 让代码看起来整洁美观 它不像其他的静态语言如C Pascal那样需要重复书写声明语句 也不像它们的语法那样经常有特殊情况和
  • Socket 与 Webservice 的区别

    Socket 与 Webservice 的区别 socket是一种协议 采用tcp或udp协议通信 Tcp udp属于网络层 上边各层的应用都需要我们自己实现 例如端口的定义 数据包的定义 数据包的加密解密等 webservice是一种服务
  • JAVA超大量数据入库

    快速插入1000W万条数据 背景 步骤1 数据库连接 步骤2 插入数据方法 步骤3 调用他就完事了 背景 产品需求 生成一串不重复的号码0 19999999且不能有超过3位以上的豹子号连号 当消耗一半后需要多少秒才能插入一条数据 首先的问题
  • microsoft store 微软应用商店打不开?所有教程都尝试了一遍,居然是因为这个

    所有教程都尝试了一遍 居然是因为这个 此方法适用于 1 平时爱用梯子 2 下面这个浏览器已经不能上网了 3 网上其他教程均不管用的情况 弄了好久 没想到还能弄好 网上的教程我都试了一遍 真的哭笑不得 原理 微软的应用商店联网靠的就是inte
  • 以一个最简单的例子把OO的JavaScript说明白

    OO的JavaScript并不高深 麻烦就麻烦在google出来的国人介绍文章经常罗罗嗦嗦 而且之间的说法还各有不同 摆在一起就让人看了头大 这里重拾简单主义 以一个最简单的例子把OO Javascript说明白 1 一个颇为精简的例子 只
  • 页面点击锚点后不改变URL的方法

    前端简单地锚点实现方法无非就是在把 a 标签的 href 写成想要跳到的元素的id 比如点击 a href box a 页面就会自动滚动到 div div 元素的位置 这样会导致url会改变 浏览器默认的行为会将 id 放在 url 后面
  • vue-cli3中解决在ie中报语法错误问题导致白屏

    1 一般报语法错误时因为部分浏览器不支持ES6 so 我们就应该下载 npm install babel polyfil 判断此插件是否成功 查看项目中是否有babel config js这个文件 2 在vue config js里配置引入
  • 【PTA 题目详解】 例题5-7 计算2个复数之和与之积

    题目 分别输入2个复数的实部与虚部 用函数实现计算2个复数之和与之积 若2个复数分别为 c1 x1 y1 i c2 x2 y2 i 则 c1 c2 x1 x2 y1 y2 i c1 c2 x1 x2 y1 y2 x1 y2 x2 y1 i
  • Java 内部类

    静态内部类 demo1 public class StaticInnerClassTest public static void main String args StaticInner Inner inner new StaticInne
  • python求一个数的阶乘_python如何计算数的阶乘

    python计算数的阶乘的三种方法 1 使用 for i in range 循环语句求阶乘 2 使用 reduce 函数求阶乘 3 通过递归求阶乘 方法一 普通的for循环语句 a 1 n 5 for i in range 1 n 1 a
  • java根据关键字搜索_java 抓取百度根据关键词搜索域名

    packagebaidusearch importcom sun glass ui SystemClipboard import java util importjava util HashMap importjava io Buffere
  • futureTask RunnableFuture Future 三者关系认知

    对于这三者首先我们看下源码 之后在分别写几个demo讲解下用法 public interface RunnableFuture
  • HTML5中的引用标记是什么元素?

    HTML5提供了多种元素用于引用文本内容 其中最常用的是 blockquote 元素和 blockquote
  • (二)TestNG 基础概念和执行时机注解

    入门的篇幅会写的比较长 毕竟基础要理解好 在学习TestNG注解前 我们先了解基本的名词 留个印象 TestNG名词解释 1 TestNG方法 method 是一个在代码内使用 Test注解标注的方法 下面代码中的isDuckMeal 就是
  • 机器学习常识 14: 半监督学习

    摘要 半监督学习强调的是一种学习场景 在该场景下 无标签数据可以协助带标签数据提升预测质量 1 基本概念 监督学习 训练数据都有标签 相应的任务为分类 回归等 无监督学习 训练数据都没有标签 相应的任务为聚类 特征提取 如 PCA 等 半监
  • MySQL索引篇

    目录 MySQL索引 一 怎么知道一条SQL语句有没有使用索引 二 如何排查慢查询 三 索引失效以及为什么失效 四 索引为什么能提高查询性能 五 为何选择B 树而不是B树 六 索引分类 七 什么时候创建以及什么时候不需要索引 八 索引优化
  • Python PyQt5(三)添加控件,绑定简单事件处理函数

    coding utf 8 Author BlueSand Email slxxfl000 163 com Web www lzmath cn Blog https blog csdn net weixin 41810846 Date 201
  • Leetcode 160. 相交链表 解题思路及C++实现

    解题思路 先将两个链表构建成一个环 定义两个快慢指针 当它们相遇时 将fast指针从头结点往后遍历 每次走一步 当这两个指针再次相遇时 该节点就是相交节点 Definition for singly linked list struct L