本文主要是介绍【链表】【打卡129天】:leetcode 160. 相交链表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1、题目描述
2、算法分析
要求找出两个单链表相交的起始结点。且链表中不存在环。
重点是第一个,使用Set集合遍历第一个链表,并把第一个链表的元素添加到Set集合中。
然后继续遍历第二个链表,判断原来的集合中是否包含第一个链表中的元素。
使用boolean b = set.contains(object o);
有一点注意:
Set set = new HashSet():HashSet是无序的
Set set = new LinkedHashSet():LinkedHashSet是有序的。
看具体题目要求。本题只是从集合里面查找,不需要有序。
public void node(ListNode head){}
方法中的参数表示的是:一个链表的第一个结点,然后head.next,下一个结点,直到head = null,指向null。说明链表已经遍历完
3、代码实现
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) {* val = x;* next = null;* }* }*/import java.util.*;
public class Solution {public ListNode getIntersectionNode(ListNode headA, ListNode headB) {if(headA == null || headB == null){return null;}Set<ListNode> set = new HashSet<>();while(headA != null){set.add(headA);headA = headA.next;}while(headB != null){if(set.contains(headB)){return headB;}headB = headB.next;}return null;}
}
这篇关于【链表】【打卡129天】:leetcode 160. 相交链表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!