023-刷题21-两个链表的第一个重合节点
解题思路:受22题启发,建立一个set集合,先遍历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) {
HashSet<ListNode> set=new HashSet<>();
ListNode nodeA=headA,nodeB=headB;
while(nodeA!=null){
if(!set.contains(nodeA)) {
set.add(nodeA);
}
nodeA=nodeA.next;
}
while(nodeB!=null){
if(set.contains(nodeB)){
return nodeB;
}
nodeB=nodeB.next;
}
return null;
}
}