两个链表的第一个公共节点——LeetCode

Posted 勇敢牛牛不怕困难@帅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了两个链表的第一个公共节点——LeetCode相关的知识,希望对你有一定的参考价值。

力扣第 52题 两个链表的第一个公共节点

力扣题目描述

示例

读懂题意

这一道力扣题属于简单类型,读起题目也是很容易的,题目给的意思是开头是两个链表,结尾可能两链表会相遇,就是能找到两链表的公共部位,题目的要求就是我们必须找到公共结点的位置,并且返回。由示例一可以看出,值相等并非一定是公共结点。但是公共结点的值一定是相等的,所以我们只能从结点出发,判断链链表指向是否为同一结点。如果在链尾之前能找到公共结点,就返回公共结点,如果没有找到就返回为null。

解题思路

首先最简单最容易理解的一个思路,双层while循环,判断A链表当前结点与链表B结点是否相等,不相等A就往下一个结点移动,B接着判断,一直移到最后一个节点。因为两链表的长度不一定相等,所以移动的距离也不同,采用双层循环来处理!

解题代码

/**
 * 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 a = headA;//获取A链表
       ListNode b = headB;//获取B链表
       while(a!=null){//如果A链表还没有走到最后一个结点
            b = headB;//每次从B链表的开头开始去遍历
           while(b!=null){//如果B还没有走到最后
               if(b==a){//如果找到则返回
                   return b;
               }
               b=b.next; //下一个B结点
           }
           a = a.next;//下一个A节点
       }
       return null;
    }
}

以上是关于两个链表的第一个公共节点——LeetCode的主要内容,如果未能解决你的问题,请参考以下文章

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

Leetcode—— 两个链表的第一个公共节点

(LeetCode)两个链表的第一个公共节点

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

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

LeetCode 剑指Offer 52 两个链表的第一个公共节点[链表] HERODING的LeetCode之路