leetCode(3):Intersection of Two Linked Lists 分类: leetCode 2015-06-16 14:41 124人阅读 评论(0) 收藏
2015-06-16 14:41
316 查看
Write a program to find the node at which the intersection of two singly linked lists begins.
For example, the following two linked lists:
begin to intersect at node c1.
Notes:
If the two linked lists have no intersection at all, return
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.
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. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { if(headA==NULL || headB==NULL) return NULL; int a=0; int b=0; ListNode* p=headA; while(p) { a++; p=p->next; } p=headB; while(p) { b++; p=p->next; } int diff=a-b; ListNode* pA=headA; ListNode* pB=headB; if(diff>=0) { int i=0; while(i<diff) { pA=pA->next; i++; } } else { diff*=(-1); int i=0; while(i<diff) { pB=pB->next; i++; } } while(pA!=pB && pA!=NULL) { pA=pA->next; pB=pB->next; } if(pA==NULL) return NULL; else return pA; } };
相关文章推荐
- CocoaPods安装和使用教程
- 解码保存全部BMP图像
- 五种I/O模型的性能分析
- ms sql server无法脱机,提示有用户连接的解决办法
- leetCode(2):Remove Linked List Elements
- 【BZOJ3143】[Hnoi2013]游走
- leetCode(2):Remove Linked List Elements 分类: leetCode 2015-06-16 14:40 141人阅读 评论(0) 收藏
- LeetCode之“动态规划”:Scramble String
- linux 命令——27 chmod
- asp.net关于如何删除repeater里面的记录
- 国信部署包开发总结
- JS生成二维码
- Ubuntu14.04安装caffe指南
- WinSock服务器设计的四个关键问题
- SD--va01的屏幕增强
- Response.Redirec方法传递汉字出现乱码
- Eclipse中10个最有用的快捷键组合
- Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传
- springMVC中的超链接传值与后台接受
- Python 2.7.6 配置 OpenCV 2.4.9方法