本文主要是介绍【注释详细,思路清晰】【打卡第15天】leetcode热题HOT100之Java实现:160. 相交链表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1、题目描述
给你两个单链表的头节点 headA
和 headB
,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null
。
2、题目分析
题目要求是求两个链表第一个相交的结点。
立刻想到Set集合。思路大概是:
将一个链表存储在Set集合中,遍历另一个链表。判断集合中是否包含遍历的链表结点。
3、算法实现
/*** 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) {// 使用Set集合,将一个链表的结点全部存储在Set集合中,然后遍历另一个链表获取元素判断是否包含上一个链表的元素Set<ListNode> set = new HashSet<ListNode>();//定义遍历结点,指向headA链表的第一个结点ListNode target = headA;while(target != null){set.add(target);target = target.next;}// 以上将headA链表遍历完并且结点全部放到set集合中,遍历headB,并判断集合中是否包含headA的结点target = headB;while(target != null){if(set.contains(target)){return target;}target = target.next;}return null;
}
while(alive){
eat();
sleep();
code();
repeat();
}
这篇关于【注释详细,思路清晰】【打卡第15天】leetcode热题HOT100之Java实现:160. 相交链表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!