hot100 打开链表的另一种方式

简介: hot100 打开链表的另一种方式

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

图示两个链表在节点 c1 开始相交

题目数据 保证 整个链式结构中不存在环。

注意,函数返回结果后,链表必须 保持其原始结构

题为leetcode160

思路:

第一种,用哈希表,先遍历A链表,将所有节点指针存入哈希表,然后遍历B链表,有一样的指针返回该指针,否则返回nullptr。

class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        ListNode *A=headA;
        unordered_set<ListNode *> visited;
        while(A!=nullptr){
            visited.insert(A);
            A=A->next;
        }
        A=headB;
        while(A!=nullptr){
            if(visited.count(A))return A;
            A=A->next;
        }
        return nullptr;
 
    }
};

第二种:


步骤:


  1. 每步操作需要同时更新指针 A 和 B。
  2. 如果指针 A 不为空,则将指针A 移到下一个节点;如果指针 B 不为空,则将指针 B 移到下一个节点。
  3. 如果指针 A 为空,则将指针 A 移到链表 headB 的头节点;如果指针B 为空,则将指针 B 移到链表 headA 的头节点。
  4. 当指针 A 和 B 指向同一个节点或者都为空时,返回它们指向的节点或者 null

结合上面步骤演示一遍,题解很妙借鉴leetcode官方,也可以看下图,最终都指向了同一节点。

class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        ListNode *A,*B;
        if(headA==nullptr||headB==nullptr)return nullptr;
        A=headA,B=headB;
        while(A!=B){
            A=A==nullptr?headB:A->next;
            B=B==nullptr?headA:B->next;
        }
        return A;
    }
};
目录
打赏
0
0
0
0
25
分享
相关文章
阿里P8整理出SQL笔记:收获不止SOL优化抓住SQL的本质
开头我先说: 有人就有江湖,有江湖就有IT系统,有IT系统就有数据库,有数据库就有SQL,SQL应用可一字概括:“"广"。加之其简单易学,SQL实现也可一字概括:“乐”。
JDK1.8的重要的新特性与功能
Java Development Kit (JDK) 1.8,也称为Java 8,是Java平台的一个重大更新,于2014年3月发布。它引入了多项新特性、新的API和性能提升
1087 3
简谈百度坐标反转至WGS84的三种思路
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 基于百度地图进行数据展示是目前项目中常见场景,但是因为百度地图是基于BD09坐标系的,GPS坐标(WGS84)或者其他常见的标准坐标是无法准确在地图上进行展示的,但是互联网在线情况下,百度提供了将WGS84经纬度转换成百度经纬度坐标的API,这里不再对其进行研究(离线情况下也有专门方法解决)。
1876 0
Zabbix【部署 04】 Windows系统安装配置agent及agent2
Zabbix【部署 04】 Windows系统安装配置agent及agent2
1449 0
|
11月前
|
CentOS 与 Debian:主要相似点和不同点
【8月更文挑战第27天】
741 2
CentOS 与 Debian:主要相似点和不同点
yum 报错:Another app is currently holding the yum lock; waiting for it to exit
开发过程中需要用到 yum 命令 有时候执行 yum 会报错如下
297 0
嵌入式linux之go语言开发(十三)LittlevGL,漂亮的嵌入式GUI的go语言绑定
嵌入式linux之go语言开发(十三)LittlevGL,漂亮的嵌入式GUI的go语言绑定
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问