Intersection of Two Linked Lists
来源:互联网 发布:mac安装卸载软件 编辑:程序博客网 时间:2024/06/05 19:28
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.
思路:先计算出两个链表的长度,然后算出两个链表的长度差diff,长的那个链表从前往后走diff步,然后开始比较两个链表对应结点的值,如果相等就是所要找的结点。
/** * 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) { int lengthA=0; int lengthB=0; if(headA==null||headB==null) return null; ListNode pa=headA; ListNode pb=headB; while(pa.next!=null) { lengthA++; pa=pa.next; } lengthA++; while(pb.next!=null) { lengthB++; pb=pb.next; } lengthB++; if(pa!=pb) return null; int diff=lengthA-lengthB; if(diff>0) { while(diff>0) { headA=headA.next; diff--; } }else{ while(diff<0) { headB=headB.next; diff++; } } while(headA!=null && headB!=null) { if(headA.val==headB.val) break; else { headA=headA.next; headB=headB.next; } } return headA; }}
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
- onclick触发JS事件 第二次才开始执行的情况
- HDOJ-2112HDU Today(Floyd+MAP)
- P124t40 自然对数
- 关于JIRA启动报错的解决步骤
- LintCode-用递归打印数字
- Intersection of Two Linked Lists
- css防止ul下的li里面内容超出换行
- 【仿去哪儿登录】UITextField输入时检查输入框是否为空
- Nginx 安装
- 中文分词算法总结
- P124第42题
- 互斥锁与自旋锁
- 3-39(fun 函数求x的n次幂)
- 《程序员》2013年5期精彩内容:Mobile, GO!