LeetCode *** 160. Intersection of Two Linked Lists
2016-04-09 18:15
344 查看
题目:
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.
分析:
该题主要是在于两个list只有相交,没有分离,所以利用这点就可以先比较AB的长度,然后从末尾开始对齐,来进行比较每个点的距离。
代码:
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.
分析:
该题主要是在于两个list只有相交,没有分离,所以利用这点就可以先比较AB的长度,然后从末尾开始对齐,来进行比较每个点的距离。
代码:
/** * 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||!headB)return NULL; int lengA=0,lengB=0; ListNode *A=headA,*B=headB; while(A||B){ if(A){ lengA++; A=A->next; } if(B){ lengB++; B=B->next; } } A=headA,B=headB; while(lengA>lengB){ A=A->next; lengA--; } while(lengA<lengB){ B=B->next; lengB--; } ListNode* res=NULL; while(A!=B){ A=A->next; B=B->next; } if(A==B)res=A; return res; } };
相关文章推荐
- PHP的版本选择
- 2016.4.9-关于“放生”反而促进“捕猎”的思考
- ERROR: While executing gem ... (Encoding::UndefinedConversionError) U+7CFB to IBM437 in conversion from UTF-16LE to UTF-8 to IBM437,当你执行gem 命令时,提示如上信息解决方案如下。
- [Clean Code] Chapter 5: 格式化你的代码!
- C语言常用转义字符表 和 ASCII码表完整版
- Sublime Text 无法使用Package Control或插件安装失败的解决方法
- leetcode 326. Power of Three
- boost解析json文件
- PHP开源框架 CodeIgniter
- Angularjs学习笔记6_table1
- 十大推送方式整理
- 浅谈Web网站架构演变过程
- 无马时代
- Git基本使用命令
- 【译】通过Hardware Layer提升Android动画性能
- GCJ 2009 Round 1C Bribe the Prisoners
- 判断两点间是否有整数点共线
- 软件需求分析
- ORA-01034: ORACLE not available Shared memory realm does not exist
- poj1006.。