160. Intersection of Two Linked Lists
2016-07-06 11:29
274 查看
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.
注意:1.
2.注意diff的求法。
直接是边数的cha
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.
注意:1.
while (pa){ lenA++; pa = pa->next; }求的是链表的边数
2.注意diff的求法。
直接是边数的cha
/**
* 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 lenA = 0, lenB = 0;
ListNode* pa = headA;
while (pa){ lenA++; pa = pa->next; }
ListNode* pb = headB;
while (pb){
lenB++;
pb = pb->next;
}
if(lenA>=lenB){
int diff=lenA-lenB;
pa=headA,pb=headB;
while(diff){
pa=pa->next;
diff--;
}
}else{
int diff=lenB-lenA;
pa=headA,pb=headB;
while(diff){
pb=pb->next;
diff--;
}
}
while (pa != pb){
pa = pa->next;
pb = pb->next;
}
return pa;
}
};
相关文章推荐
- iOS Runtime 实践(1)
- LeetCode - 108. Convert Sorted Array to Binary Search Tree
- Ubuntu15.10虚拟机中分辨率调整
- 任意字符的矩阵输出(Square of Any Character)
- java设计模式学习笔记——扩展型模式1
- 使用OpenCV计算图像的轮廓矩的代码!
- Worktile中百万级实时消息推送服务的实现
- 帅哥,你喜欢内设还是外设啊? ——东芝SSD Q300测评
- bzoj4195 程序自动分析
- LINQ 之Union All/Union/Intersect操作
- 随便说说removeFromSuperview方法
- linux 后台运行jar包
- xcode 更改svn地址
- 人人都是产品经理-一个需求的奋斗史
- ilmerge工具合并多个DLL或EXE
- Java 常用API的运用,效率及技巧
- jQuery-searchableSelect(下拉搜索框)
- java加密技术一(单向加密算法)
- Merge k Sorted Lists
- URAL 1309 Dispute <函数关系的递推>