博客
关于我
Leetcode160 两个链表是否相交
阅读量:795 次
发布时间:2023-01-31

本文共 903 字,大约阅读时间需要 3 分钟。

   leetcode 160题,判断两个链表是否相交

此题可以说是算法界第一深情,如果我走过你走过的路,那么我们就可能会相遇。

具体解决思路如下

两个链表是否相交有两种可能,一种不相交,一种相交,首先来看下相交的情况,那么它们会有公共部分,假设公共部分长度为c,然后链表一中不想交部分为a, 链表二中不想交部分为b,那么链表一的长度可以表示为a + c, 链表2的长度为b + c, 想在弄两个指针,一个指针A指向链表一的头部,另一个指针B指向链表b的头部,两个指针向后遍历,如果到达了尾部,那么就从另一个链表的头部开始遍历,直到两个节点相同,即找到了交叉节点,那么指针A就走过了a+c +b的长度,指针B走过了b+c +a的长度,可以看到它们是一样大的,所以可以找到相同的节点,同理,如果两个链表不想交,那么都走完两个链表后,节点都为null,代表没有交点。

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { *         val = x; *         next = null; *     } * } */public class Solution {    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {        ListNode tempA = headA;        ListNode tempB = headB;        while(tempA != tempB){            tempA = tempA == null ? headB : tempA.next;            tempB = tempB == null ? headA : tempB.next;        }        return tempA;    }}

具体代码如下

转载地址:http://dmgyk.baihongyu.com/

你可能感兴趣的文章
leetcode题解4-寻找两个正序数组的中位数
查看>>
leetcode题解41-缺失的第一个正数原来如此简单
查看>>
leetcode题解434-字符串中的单词数(双指针经典)
查看>>
leetcode题解46-全排列
查看>>
leetcode题解48-旋转图像
查看>>
leetcode题解50-Pow(x,n)
查看>>
leetcode题解53-最大子序和
查看>>
leetcode题解538-把二叉搜索树转化为累加树
查看>>
leetcode题解54-螺旋矩阵
查看>>
leetcode题解56-合并区间
查看>>
leetcode题解62-不同路径
查看>>
leetcode题解66-加一
查看>>
leetcode题解70-爬楼梯
查看>>
leetcode题解72-编辑距离
查看>>
leetcode题解75-颜色分类
查看>>
leetcode题解767-重构字符串
查看>>
leetcode题解77-子集
查看>>
leetcode题解77-组合
查看>>
leetcode题解776-旋转字符串
查看>>
leetcode题解8-盛最多水的容器
查看>>