【算法随想录03】相交链表

题目:160. 相交链表
难度:EASY
在这里插入图片描述

思路

主要难点在于如何进行节点之间的对应。两条链表长度不定长,如何找到需要对比的节点至关重要。
在这里插入图片描述

我们从后往前看,我们需要对比的节点有什么特点。一个最大的特点就是后面的节点数相同。这就是我们的突破口。

解决这个问题,有两种方案。

第一种,遍历两个链表,计算出节点数,然后将节点数多的链表向后平移;第二种,定义两个指针,分别先后遍历两个链表。
方法二

代码

class Solution {
   
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
   
        // p1 指向 A 链表头结点,p2 指向 B 链表头结点
        ListNode *p1 = headA, *p2 = headB;
        while (p1 != p2) {
   
            // p1 走一步,如果走到 A 链表末尾,转到 B 链表
            if (p1 == nullptr) p1 = headB;
            else                p1 = p1->next;
            // p2 走一步,如果走到 B 链表末尾,转到 A 链表
            if (p2 == nullptr) p2 = headA;
            else                p2 = p2->next;
        }
        return p1;
    }
};

相关推荐

最近更新

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

    2024-02-21 18:34:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-21 18:34:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-21 18:34:02       82 阅读
  4. Python语言-面向对象

    2024-02-21 18:34:02       91 阅读

热门阅读

  1. 【达梦数据库】通过系统函数来配置sqllog

    2024-02-21 18:34:02       46 阅读
  2. 设计模式的另一种有趣理解

    2024-02-21 18:34:02       38 阅读
  3. HTTP常见状态码(持续更新中~~)

    2024-02-21 18:34:02       49 阅读
  4. 强化学习入门(Matlab2021b)-创建环境【3】

    2024-02-21 18:34:02       52 阅读
  5. 【c++入门】算得分

    2024-02-21 18:34:02       61 阅读
  6. 一起不能上某几个网站的事件处理

    2024-02-21 18:34:02       53 阅读
  7. 聊聊arthas的spring-boot-starter

    2024-02-21 18:34:02       42 阅读
  8. 【算法学习】搜索算法之深度优先搜索

    2024-02-21 18:34:02       46 阅读