Intersection of Two Linked Lists
来源:互联网 发布:12123 网络请求失败 编辑:程序博客网 时间:2024/04/28 17:51
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.
/** * 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) { if( headA==null || headB==null) return null; int lenA = getLen(headA); int lenB = getLen(headB); ListNode pa = headA; ListNode pb = headB; int dis = Math.abs(lenA - lenB); if(lenA > lenB){ for(int i = 0; i < dis; i++){ pa = pa.next; } } else if(lenB > lenA){ for(int i = 0; i < dis; i++){ pb = pb.next; } } while(pa != null && pa.val != pb.val){ pa = pa.next; pb = pb.next; } return pa; } public int getLen(ListNode head){ int len = 0; for(ListNode n = head; n != null; n = n.next){ len ++; } return len; }}
思路:
1、用栈。将两条链表存入栈中,然后逐个pop比较。需消耗较多空间,不能满足题目要求。
2、快行指针思想,遍历时,沿较长的链表先走。
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
- 使用java实现压缩/解压(可以解决中文乱码)
- C++ 60分钟入门教程 - 8、C++继承
- 现实世界中哪些地方用到了Java?
- JSOI2014第三轮 DAY2T2 士兵部署
- 自定义 Hibernate 的 HQL 函数
- Intersection of Two Linked Lists
- CentOS 7 搭建Samba服务器(无密码)
- 警情接收平台设计日志(基于对象设计非面向对象设计)
- 黑马程序员——(五)内部类
- 多线程-创建线程的三种方式
- Android学习之 GPS定位
- win主机5种方法解除开机密码
- UVA 10465
- MyMath四原则