leetcode.面试题 02.07. 链表相交

题目

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

图示两个链表在节点 c1 开始相交:
在这里插入图片描述

思路

假a在链表A上移动,b在链表B上移动,a移动完在B上开始,b移动完再A上开始。最终a移动的距离a + c + x,b移动的距离 b + c + y。可以看到a + c + x = b + c + y,即a + x = b + y ,a移动b距离,b移动a距离a,b指针就会相交,直接返回a,b相交时候a/b指针所指节点的位置。即使a,b没有相交的地方,返回的也是null。

在这里插入图片描述

实现

public class Solution {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
         
        //怎么保证a链表上的指针下次指到b链表? 一轮就行了 不用考虑
         ListNode a = headA;
         ListNode b = headB;
         
         while(a != b){
            a = a == null ? headB : a.next;
            b = b == null ? headA : b.next;
         }
        return a;
    }
}

相关推荐

  1. leetcode面试 02.07. 相交

    2024-04-06 04:24:03       54 阅读
  2. leetcode-相交

    2024-04-06 04:24:03       57 阅读

最近更新

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

    2024-04-06 04:24:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-06 04:24:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-06 04:24:03       82 阅读
  4. Python语言-面向对象

    2024-04-06 04:24:03       91 阅读

热门阅读

  1. Docker-compose部署 gitlab-server

    2024-04-06 04:24:03       39 阅读
  2. 【数据结构】利用顺序表实现通讯录

    2024-04-06 04:24:03       40 阅读
  3. Linux常用命令详介

    2024-04-06 04:24:03       42 阅读
  4. 代码的重构

    2024-04-06 04:24:03       36 阅读
  5. SQL语句每日一练七

    2024-04-06 04:24:03       31 阅读
  6. 【C++】每日一题 121 买卖股票的最佳时机

    2024-04-06 04:24:03       35 阅读
  7. 面试算法-142-找到字符串中所有字母异位词

    2024-04-06 04:24:03       35 阅读
  8. TS学习02 面向对象 类、封装继承、接口、泛型

    2024-04-06 04:24:03       32 阅读
  9. 小组分享内容二:Jsoup部分(未完待续)

    2024-04-06 04:24:03       34 阅读