Java-Intersection of Two Linked Lists
来源:互联网 发布:知轩藏书进不去 编辑:程序博客网 时间:2024/06/05 12:04
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.
查找两个链表的交叉点 即第一次出现相同节点的地方 使用哈希表 时间复杂度满足要求 但空间复杂度太高 代码如下:
Map<ListNode,Integer> hma=new HashMap<ListNode,Integer>(); Map<ListNode,Integer> hmb=new HashMap<ListNode,Integer>(); while(headA!=null||headB!=null){ if(headA!=null){ if(hmb.containsKey(headA)){ return headA; }else{ hma.put(headA,1); headA=headA.next; } } if(headB!=null){ if(hma.containsKey(headB)){ return headB; }else{ hmb.put(headB,1); headB=headB.next; } } } return null;
第二个思路是 晾着若有公用部分 则链表各自部分的差与整个链表长度的差是相同的 所以 先分别算出链表长度 再让长度长的链表的指针先走 差值步 则保证两指针一起走 能一起到公共部分 此公共部分即时所求解 代码如下:
int lena=0; int lenb=0; ListNode pa=headA; ListNode pb=headB; while(pa!=null){ lena++; pa=pa.next; } while(pb!=null){ lenb++; pb=pb.next; } if(lena<=lenb){ int n=lenb-lena; while(n>0){ headB=headB.next; n--; } }else{ int n=lena-lenb; while(n>0){ headA=headA.next; n--; } } while(headA!=headB){ headA=headA.next; headB=headB.next; } return headB;
0 0
- Intersection of Two Linked Lists (Java)
- Java-Intersection of Two Linked Lists
- LeetCode|Intersection of Two Linked Lists-java
- (java)Intersection of Two Linked Lists
- 160. Intersection of Two Linked Lists(java)
- 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
- OSI模型和TCP/IP模型
- 删除.note.gnu.build-id段号
- 对话框Dialog使用总结
- poi 导入excel spring mvc
- Endophytic Shiitake Mushrooms deserve their own class due to their behavior
- Java-Intersection of Two Linked Lists
- 安装LR时报未找到putty.GID
- Ng机器学习系列补充:2、分类和回归树算法CART
- 【云简评】之七《Forrester 2015年10大云预测》
- 手游团队如何提高生存能力
- Java数组操作的10大方法
- 图片服务器设计(ImageMagick)
- 【ANDROID】Android 在oncreate() 方法中调用 findViewById 返回 null 问题的原因和解决方法
- Android4.22来电铃声流程