【LeetCode】面试题 02.07. 链表相交

  今日学习的文章链接和视频链接

leetcode题目地址:面试题 02.07. 链表相交

 代码随想录题解地址:代码随想录

题目简介

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

看到题目的第一想法(可以贴代码)

1. 求出两个链表的长度lenA和lenB,定义双指针fast和slow,fast比slow快 | lenA - lenB | 个结点,一起遍历,直到两个指针的val相等。应该不用空的头结点。

public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        if (headA == null || headB == null){
            return null;
        }
        int lenA = 0, lenB = 0;
        ListNode a1 = headA, b1 = headB;
        while (a1 != null){
            lenA++;
            a1 = a1.next;
        }
        while (b1 != null){
            lenB++;
            b1 = b1.next;
        }
        ListNode a2 = headA, b2 = headB;
        if (lenA >= lenB){
            for (int i = 0; i < (lenA-lenB); i++){
                a2 = a2.next;
            }
        }else{
            for (int i = 0; i < (lenB-lenA); i++){
                b2 = b2.next;
            }
        }
        boolean check = false;
        while (a2 != null){
            if (a2 == b2){
                check = true;
                break;
            }
            a2 = a2.next;
            b2 = b2.next;
        }
        if (check == false){
            return null;
        }else{
            return a2;
        }
    }

实现过程中遇到哪些困难

看完代码随想录之后的想法

【解题思路】和我的一致。

学习时长

12:05 ~ 12:40 解题成功

12:40 ~ 12:45  看视频题解、写博客


今日收获

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值