编程语言
首页 > 编程语言> > 我竟从一道算法题中看到了浪漫

我竟从一道算法题中看到了浪漫

作者:互联网

听说微信搜索《Java鱼仔》会变更强哦!

本文收录于JavaStarter ,里面有我完整的Java系列文章,学习或面试都可以看看哦

(一)前言

最近在准备面试,也会每天刷几道算法题,碰巧今天刷到了一道浪漫的算法题,正好趁着活动分享给大家。

剑指 Offer 52. 两个链表的第一个公共节点

(二)题目描述

输入两个链表,找出它们的第一个公共节点。

如下面的两个链表:

在节点 c1 开始相交。则说明他们的第一个公共节点是c1

比如:

上面的两个链表第一个公共节点就是8

(三)思路分析

这道题不算难,这里使用两个指针nodeA和nodeB,NodeA指向链表A的表头,NodeB指向链表B的表头。当NodeA走到底时指向链表B的表头重新走,NodeB走到底时指向链表A的表头重新走。直到两个指针相遇。两个指针是一定会相遇的,因为两个指针最后走过的路程都是一样的。

以上图为例:

三段路,指针A走的路是A+C+B,指针B走的路是B+C+A,如果有公共部分,就会在第一个点相遇。如果没有公共部分,则只能在全走完等于null的时候相遇。

(四)AC代码

public class Solution {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        ListNode node1=headA,node2=headB;
        while(node1!=node2){
            node1=node1!=null?node1.next:headB;
            node2=node2!=null?node2.next:headA;
        }
        return node1;
    }
}

(五)总结

《你的名字》的剧情不就是和这个算法一样:你变成了我,走过我走过的路;我变成了你,走过你走过的路;终有一天,我们会相遇。

如果我们注定有同一个未来,只需要彼此不断前进,我是鱼仔,我们下期再见。

标签:ListNode,题中,表头,链表,算法,浪漫,node1,node2,指针
来源: https://blog.csdn.net/qq_41973594/article/details/114418402