两个链表的第一个公共节点——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 Algorithm 剑指 Offer 52. 两个链表的第一个公共节点