Intersection of Two Linked Lists
来源:互联网 发布:火绒 windows defender 编辑:程序博客网 时间:2024/06/02 05:30
题目地址:https://leetcode.com/problems/intersection-of-two-linked-lists/
Write a program to find the node at which the intersection of two singly linked lists begins.
For example, the following two linked lists:
A: a1 → a2 ↘ c1 → c2 → c3 ↗ B: b1 → b2 → b3
begin to intersect at node c1.
Notes:
- If the two linked lists have no intersection at all, return null.
- The linked lists must retain their original structure after the function returns.
- You may assume there are no cycles anywhere in the entire linked structure.
- Your code should preferably run in O(n) time and use only O(1) memory.
找出两个链表相交的第一个节点,加入两个链表有相交的节点,那么从这个节点的以后两个链表都是相同的,不止是val相同,地址也是相同的,如果用两层for循环,肯定能找到这个节点,不过这么做的时间复杂度是O(m*n),其中m与n分别是两个链表的长度。
有没有遍历一次就能找到相交节点呢,当然是可以的,我们可以把两个链表的每个节点依次散列在哈希表中,然后再去检查第一次出现冲突的节点,那么这个节点就是相交节点。
public class IntersectionOfTwoLinkedLists { public static ListNode getIntersectionNode(ListNode headA, ListNode headB) { if (headA == null || headB == null) return null; HashMap<ListNode, Integer> map = new HashMap<>(); ListNode p = headA; while (p != null) { map.put(p, 0); p = p.next; } p = headB; while (p != null) { if (map.containsKey(p)) break; p = p.next; } return p; } public static void main(String[] args) { ListNode a1 = new ListNode(1); a1.next = new ListNode(2); a1.next.next = new ListNode(3); a1.next.next.next = new ListNode(4); a1.next.next.next.next = new ListNode(5); ListNode b1 = new ListNode(1); b1.next = new ListNode(2); b1.next.next = a1.next.next; System.out.println(getIntersectionNode(a1, b1).val); }}
0 0
- Intersection of Two Linked Lists
- Intersection of Two Linked Lists
- Intersection of Two Linked Lists
- Intersection of Two Linked Lists
- Intersection of Two Linked Lists
- Intersection of Two Linked Lists
- Intersection of Two Linked Lists
- Intersection of Two Linked Lists
- Intersection of Two Linked Lists
- Intersection of Two Linked Lists
- Intersection of Two Linked Lists
- Intersection of Two Linked Lists
- Intersection of Two Linked Lists
- Intersection of Two Linked Lists
- Intersection of Two Linked Lists
- Intersection of Two Linked Lists
- Intersection of Two Linked Lists
- Intersection of Two Linked Lists
- js 实现自动更新倒计时效果
- 集合的子集
- 使用Crontab定时执行任务
- Vertica 安装,建库,新建测试用户并授予权限,建表,入库
- poi实现Excel模板化数据读写
- Intersection of Two Linked Lists
- 02 讲:用 Python 设计第一个游戏
- 王朝 是否有B或b
- 知识点随记
- 项目初识
- Struts入门实例(2)--Action<1>
- 交换--Swap
- ArrayList的排序
- 原来我这么菜...