160. Intersection of Two Linked Lists
2016-03-10 16:54
405 查看
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.
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; } };
相关文章推荐
- Java基础学习总结(51)——JAVA分层理解
- C++完成一个大数类的+、-和输入、输出
- 基于FPGA的PCIE总线实现PC与SDRAM的数据读写过程
- 前端开发自动化优化工具
- Java基础学习总结(51)——JAVA分层理解
- 【java-之路】序列化与反序列化对象
- 60-题目1198:a+b
- 956 二分查找
- nodejs npm常用命令
- java递归删除文件夹demo,删除文件目录例子
- 常见术语
- 常见术语
- WeX5界面模块化的使用—JS引用
- ArcGIS教程:地理处理服务示例(裁剪与发送)(一)
- 搭建WAMP开发环境
- nrf51822 --- 修改蓝牙名字
- 值得推荐的C/C++框架和库 (真的很强大)
- ORA-01652: 无法通过 128 (在表空间 TEMP 中) 扩展 temp 段
- CSS语法小记
- 哈哈哈,今天新开通了CSDN博客,唠叨几句。