刷leetcode:Intersection of Two Linked Lists
来源:互联网 发布:web 关联数据库 编辑:程序博客网 时间:2024/06/05 11:23
题号:160 题目
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.
题目中要求找到两个链表的相交点。具体思路如下:
(1)求得两个链表的长度,
(2)找到较长的链表中和较短链表的长度相等的点。也就是说如果链表A长度为5,链表B长度为3,那么在链表中的前两个肯定不会和链表B相交,这一步我们要做的就是找到链表A中的第三个节点。
(3)遍历链表,判断对应位置的值是否相等。
具体代码如下:已AC
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */ /** * Date:2015-03-06 * Author:Mandy * Number:160 * */public class Solution { public ListNode getIntersectionNode(ListNode headA, ListNode headB) { if (headA == null || headB == null) return null; ListNode pA=headA,pB=headB; int lengthA=0,lengthB=0; //get length of each ListNode while(pA!=null){ lengthA++; pA=pA.next; } while(pB!=null){ lengthB++; pB=pB.next; } //find intersection index pA=headA;pB=headB; int diff=0; if(lengthA>=lengthB){ diff=lengthA-lengthB; while(diff>0){ pA=pA.next; diff--; } }else{ diff=lengthB-lengthA; while(diff>0){ pB=pB.next; diff--; } } while(pA!=null&&pB!=null){ if(pA.val==pB.val){ return pA; } pA=pA.next; pB=pB.next; } return null; }}
0 0
- 刷leetcode:Intersection of Two Linked Lists
- [leetcode] [leetcode]Intersection of Two Linked Lists
- 【LeetCode】Intersection of Two Linked Lists
- LeetCode: Intersection of Two Linked Lists
- [Leetcode] Intersection of Two Linked Lists
- [Leetcode]Intersection of Two Linked Lists
- LeetCode:Intersection of Two Linked Lists
- leetcode: Intersection of Two Linked Lists
- Leetcode: Intersection of Two Linked Lists
- Intersection of Two Linked Lists--leetcode
- [leetcode]Intersection of Two Linked Lists
- leetcode:Intersection of Two Linked Lists
- leetcode之Intersection of Two Linked Lists
- 【Leetcode】:Intersection of Two Linked Lists
- leetcode Intersection of Two Linked Lists
- [LeetCode]Intersection of Two Linked Lists
- leetcode: Intersection of Two Linked Lists
- 【LeetCode】Intersection of Two Linked Lists
- item属性总结
- java中list的toArray有参方法小结
- Mat类的一些用法
- Code[vs]数字三角形(基础棋盘dp)
- Activiti boundrytimer 和listen结合使用学习
- 刷leetcode:Intersection of Two Linked Lists
- Android 无法识别布局文件问题解决方案
- 用泛型构建复杂容器模型
- 物联12:不同频率的电子标签
- PAT 1024. 科学计数法
- linux配置jdk以及eclipse的经验
- win8.1中ie11不能打开,打开没反应的解决办法
- 简单工厂模式StaticFactoryMethodPattern
- Swift中的willSet与didSet