LeetCode-Intersection of Two Linked Lists
来源:互联网 发布:安卓卡iphone7在线软件 编辑:程序博客网 时间:2024/06/06 19:31
题目
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.
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {ListNode pa = headA;ListNode pb = headB;int lengthA = lengthOfList(headA);int lengthB = lengthOfList(headB);if (lengthA - lengthB > 0) {for (int i = 0; i < lengthA-lengthB; i++) {pa = pa.next;}}if (lengthB - lengthA > 0) {for (int i = 0; i < lengthB-lengthA; i++) {pb = pb.next;};}while (pa != null && pb != null) {if (pa == pb) {return pa;}pa = pa.next;pb = pb.next;} return null; }public int lengthOfList(ListNode head) {ListNode p;int length=0;for (p = head; p != null; p = p.next) {length++;}return length;}
还有一种是环形链表性的解法,顺便也贴出来
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {ListNode p1 = headA; ListNode p2 = headB; if (p1 == null || p2 == null) return null; while (p1 != null && p2 != null && p1 != p2) { p1 = p1.next; p2 = p2.next; if (p1 == p2) return p1; if (p1 == null) p1 = headB; if (p2 == null) p2 = headA; } return p1; }
0 0
- [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
- LeetCode Intersection of Two Linked Lists
- caffe在make过程中出现[.build_release/tools/extract_features.bin] Error 1或者与libreadline.so.6相关错误解决方法
- 【Dokan学习记录】2015-01-28
- Android学习day03
- ramdisk根文件系统+initramfs
- Flash的层叠顺序问题(z-index)
- LeetCode-Intersection of Two Linked Lists
- cf_288 C
- Java 高效复制文件方法
- 去除ckeditor上传图片打开窗口里面的上传高级和链接tab
- android 进度条 自定义菊花
- JAVA学习知识点1.24之SpringMVC学习Day05
- Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面
- java.util.concurrent包介绍(3)——Happens-before法则
- 打造android ORM框架opendroid(一)——ORM框架的使用