博客
关于我
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/

你可能感兴趣的文章
leetcode190-颠倒二进制位
查看>>
leetcode191-打家劫舍
查看>>
leetcode23-合并K个升序链表
查看>>
leetcode231 判断一个给定的整数是否是2的n次幂
查看>>
leetcode238-除自身以外数组的乘积
查看>>
LeetCode240:Search a 2D Matrix II
查看>>
LeetCode268.缺失数字
查看>>
LeetCode331.验证二叉树的前序序列化
查看>>
leetcode380. Insert Delete GetRandom O(1)
查看>>
LeetCode502
查看>>
leetcode507
查看>>
Leetcode: Group Anagrams
查看>>
Leetcode: Remove Duplicates from Sorted Array II
查看>>
Leetcode: Spiral Matrix II
查看>>
LeetCode: String to Integer (atoi)
查看>>
Leetcode:454. 4Sum II
查看>>
leetcode:Minimum Depth of Binary Tree【Python版】
查看>>
LeetCode:Restore IP Addresses
查看>>
LeetCode_Lowest Common Ancestor of a Binary Search Tree (Binary Tree)
查看>>
LeetCode——Unique Paths
查看>>