160. Intersection of Two Linked Lists
来源:互联网 发布:linux history 记录数 编辑:程序博客网 时间:2024/05/17 06:18
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.
/** * 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) { ListNode* pA = headA; ListNode* pB = headB; int lA = 0; int lB = 0; while(1) { if(pA != NULL) { ++lA; pA = pA -> next; } if(pB != NULL) { ++lB; pB = pB -> next; } if(pA == NULL && pB == NULL) { break; } } int les = lA - lB >= 0 ? lA - lB : lB - lA; if(lA < lB) { pA = headB; pB = headA; }else { pA = headA; pB = headB; } int cnt = 0; while(cnt < les) { pA = pA -> next; ++cnt; } while(pA != pB) { pA = pA -> next; pB = pB -> next; } return pA; }};
0 0
- [LeetCode]160.Intersection of Two Linked Lists
- LeetCode 160. Intersection of Two Linked Lists
- 【LeetCode】160.Intersection of Two Linked Lists
- [leetcode] 160.Intersection of Two Linked Lists
- 160. Intersection of Two Linked Lists
- 160. Intersection of Two Linked Lists
- [LeetCode]160. Intersection of Two Linked Lists
- 160. Intersection of Two Linked Lists
- 160. Intersection of Two Linked Lists
- LeetCode--160. Intersection of Two Linked Lists
- 160. Intersection of Two Linked Lists
- LeetCode 160. Intersection of Two Linked Lists
- 160. Intersection of Two Linked Lists
- 160. Intersection of Two Linked Lists
- 160. Intersection of Two Linked Lists
- 【LeetCode】160. Intersection of Two Linked Lists
- 160. Intersection of Two Linked Lists
- 160. Intersection of Two Linked Lists
- 观察者模式
- Error:Execution failed for task ':ephwealth:mergeOfficialDebugResources'. > Some file crunching fail
- Java基础学习总结(51)——JAVA分层理解
- 60-题目1198:a+b
- jquery easyui DataGrid 数据表格 属性
- 160. Intersection of Two Linked Lists
- 文字检测和识别5-LSTM简介
- 基于FPGA的PCIE总线实现PC与SDRAM的数据读写过程
- Spring mvc实现上传文件进度条
- C++完成一个大数类的+、-和输入、输出
- Mysql 索引
- 十分钟让你明白Objective-C的语法(和Java、C++的对比)
- 引入sleak异常,Warning: Device is not tracking resource allocation处理
- 自定义的RPC的Java实现