前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >算法练习(11) - 寻找相交链表的相交节点

算法练习(11) - 寻找相交链表的相交节点

作者头像
惊羽-布壳儿
发布2022-06-15 16:07:08
2860
发布2022-06-15 16:07:08
举报
文章被收录于专栏:惊羽-布壳儿

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

结果

答案

代码语言:javascript
复制
public class Solution {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        ListNode pa = headA;
        int al = 0;
        while(pa != null){
            al++;
            pa = pa.next;
        }

        ListNode pb = headB;

        int bl = 0;
        while(pb != null){
            bl++;
            pb = pb.next;
        }
        int step = 0;
        if(al > bl){
            step = al -bl;
            int s = 0;
            while(headA != null && s < step){
                headA = headA.next;
                s++;
            }
            while (headA != headB){
                headA = headA.next;
                headB = headB.next;
            }
            return headA;

        }else{
            step = bl -al;
            int s = 0;
            while(headB != null && s < step){
                headB = headB.next;
                s++;
            }
            while (headA != headB){
                headA = headA.next;
                headB = headB.next;
            }
            return headA;
        }
    }
}

思路

将长度比较长的链表指针提前赶到短链表的头结点位置,然后2个指针以同样步伐一步一步往下走,直到找到相交节点或返回空值

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目 : 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。
  • 结果
  • 答案
  • 思路
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档