hot100 打开链表的另一种方式

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 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;
    }
};

 

相关推荐

  1. github 通过ssh进行连接方式

    2024-03-15 12:46:05       53 阅读
  2. 【Linux】基于rpm安装yum方式

    2024-03-15 12:46:05       34 阅读
  3. Delphi打开网址方法

    2024-03-15 12:46:05       24 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-15 12:46:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-15 12:46:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-15 12:46:05       82 阅读
  4. Python语言-面向对象

    2024-03-15 12:46:05       91 阅读

热门阅读

  1. 探索Python人工智能编程之道:从入门到实战

    2024-03-15 12:46:05       39 阅读
  2. docker日志在哪看?怎么在Linux服务器中查看日志

    2024-03-15 12:46:05       48 阅读
  3. Springboot参数分组校验

    2024-03-15 12:46:05       36 阅读
  4. 阿里云服务 安装 Docker

    2024-03-15 12:46:05       43 阅读
  5. 《数据库》复试问答题总结

    2024-03-15 12:46:05       38 阅读
  6. 软考网络工程师 第五章 第六节 WLAN安全

    2024-03-15 12:46:05       41 阅读
  7. C# tcp通信连接正常判断

    2024-03-15 12:46:05       44 阅读