力扣链表相交?难?看不懂你别点赞

目录

题目:链表相交

思路:

代码:


题目:链表相交

 简简单单的题让出题人给描述复杂啦,第一次看难免云里雾里,知其然不知其所以然。

这道题记住一点,什么情况下相交? 就是链表的两个指针指向同一个地址的时候就是相交了。

 有图有真相:上图

 图中很明显,两条链表捋直了 ,他们都具有相同的C1,所以在C1的地方是相交的。

上图:

其实到这里解题思路就清晰了,具体思路和实在看思路与代码中 ↓。

思路:

  • //先求出两个链表的长度
  • //再让两个链表对齐
  • //两个链表同时往后遍历
  • //有相同的指针就返回相同的指针
  • //没有相同的指针就返回null

代码:

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
import java.util.*;
public class Solution {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        //先求出两个链表的长度
        //再让两个链表对齐
        //两个链表同时往后遍历
        //有相同的指针就返回相同的指针
        //没有相同的指针就返回null
        ListNode curA=headA;// 派出链表A的一个头结点分身,好操作自家的队伍
        ListNode curB=headB;//派出链表B的一个头结点分身,好操作自家的队伍
        int lengthA=0;
        int lengthB=0;
        while(curA!=null){// 计算A链表的长度
            lengthA++;
            curA=curA.next;
        }
        while(curB!=null){//计算B链表的长度
            lengthB++;
            curB=curB.next;
        }
        curA=headA;// 分身A干完事情回归头结A
        curB=headB;//分身B干完事情回归头结点B
        if(lengthA<lengthB){// 保证下面操作的一致性;
            int tmp1=lengthA;
            lengthA=lengthB;
            lengthB=tmp1;
            ListNode tmp2=curA;
            curA=curB;
            curB=tmp2;
        }
        int dif=lengthA-lengthB; //找出两个的差值
        while((dif--)>0){// 以后记住没有傀儡节点的情况下> 表示走n步,>=  表示走n+1步。
            curA=curA.next;
        }
        while(curA!=null){
            if(curA==curB){
                return curB;
            }
            curA=curA.next;
            curB=curB.next;
        }
        return null;
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值