本文主要是介绍【链表】【打卡第138道】:《剑指Offer》3刷:JZ52 两个链表的第一个公共结点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1、题目描述
2、算法分析
注意:返回的是两个链表中的第一个公共结点,若两个链表中第一个公共结点。公共结点后面还有结点,则返回的是第一个公共结点以后的那个链表。
本题使用的是Set集合,利用了Set集合的一个重要特性:Set集合中的元素不可重复;
首先将链表pHead1中的结点存储到Set集合中,然后再遍历pHead2链表,判断set集合中是否存在pHead2的结点。存在的话直接返回pHead2。不存在的话直接返回null。
注意:ListNode这个数据结构,结点值val,next指针,构造函数一定有参数。
public class ListNode {int val;ListNode next = null;ListNode(int val) {this.val = val;} }
3、代码实现
/*
public class ListNode {int val;ListNode next = null;ListNode(int val) {this.val = val;}
}*/
import java.util.*;
public class Solution {public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {if(pHead1 == null || pHead2 == null){return null;}Set<ListNode> set = new HashSet<>();while(pHead1 != null){set.add(pHead1);pHead1 = pHead1.next;}while(pHead2 != null){if(set.contains(pHead2)){return pHead2;}pHead2 = pHead2.next;}return null;}
}
这篇关于【链表】【打卡第138道】:《剑指Offer》3刷:JZ52 两个链表的第一个公共结点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!