【剑指offer-解题系列(37)】 两个链表的第一个公共结点。
来源:互联网 发布:剑灵极品龙女数据 编辑:程序博客网 时间:2024/05/18 01:01
题目描述
输入两个链表,找出它们的第一个公共结点。
分析
可以采用两种办法:
1、采用两个节点,分别从头到尾遍历一遍,得到两个链表的长度差k,然后再采用两个相差k距离节点指针向前跳动,空间复杂度O(1),时间复杂度O(n)
2、采用两个堆栈,把节点全部压入,然后出栈,直到最后一个公共节点。空间复杂度O(n),时间复杂度O(n)
代码实现
////////////////////////////指针版本 比长度
ListNode* FindFirstCommonNode ( ListNode* pHead1, ListNode* pHead2) {if(!pHead1||!pHead2)
return NULL;
int len1=0,len2=0;
int step = 0;
ListNode*p1=pHead1;
while(p1!=NULL){
len1++;
p1=p1->next;
}
ListNode*p2=pHead2;
while(p2!=NULL){
len2++;
p2=p2->next;
}
////////////////////////////链表内存不是指针,不能直接相加的
p1=pHead1;
p2=pHead2;
if(len1>len2){
step = len1-len2;
while(step-->0) p1=p1->next;
}
else {
step = len2-len1;
while(step-->0) p2=p2->next;
}
while( (p1!=NULL) && (p2!=NULL)){
if(p1==p2){
return p1;
}
p2=p2->next;
p1=p1->next;
}
return NULL;
}
////////////////////////////堆栈版本
ListNode* FindFirstCommonNode2( ListNode* pHead1, ListNode* pHead2) {
if(!pHead1||!pHead2)
return NULL;
ListNode*p1=pHead1;
while(p1!=NULL){
S1.push(p1);
p1=p1->next;
}
ListNode*p2=pHead2;
while(p2!=NULL){
S2.push(p2);
p2=p2->next;
}
ListNode*q=NULL;
while( !S1.empty() && !S2.empty() ){
if( S1.top() == S2.top()){
q = S1.top();
S1.pop();
S2.pop();
}
else{
break;
}
}
return q;
}
stack<ListNode*>S1;
stack<ListNode*>S2;
阅读全文
0 0
- 【剑指offer-解题系列(37)】 两个链表的第一个公共结点。
- 剑指Offer系列-面试题37:两个链表的第一个公共结点
- 【剑指offer】两个链表的第一个公共结点
- 剑指offer--两个链表的第一个公共结点
- 《剑指offer》两个链表的第一个公共结点
- 剑指offer 两个链表的第一个公共结点
- 剑指offer:两个链表的第一个公共结点
- [剑指offer]两个链表的第一个公共结点
- 剑指offer---两个链表的第一个公共结点
- 剑指offer|两个链表的第一个公共结点
- 剑指offer-两个链表的第一个公共结点
- 《剑指offer》-两个链表的第一个公共结点
- 剑指Offer: 两个链表的第一个公共结点
- 剑指offer:两个链表的第一个公共结点
- 剑指offer 两个链表的第一个公共结点
- 剑指offer--两个链表的第一个公共结点
- 剑指offer:两个链表的第一个公共结点
- 剑指Offer------两个链表的第一个公共结点
- Java日期格式化-线程安全
- HDU2454 判定简单图
- 前端常问问题总结
- 统一监控报警平台架构设计思路
- mysql 5.6.36 win7 32位免安装版配置
- 【剑指offer-解题系列(37)】 两个链表的第一个公共结点。
- POJ1753 枚举
- echarts模拟highcharts实现折线图的虚实转换
- C#对话框 保存对话框、打开对话框的实现、颜色文件框、字体文本框
- 面试中经常遇到的问题(非技术)
- C++并发编程实战chapter1你好,C++的并发世界--笔记0--多进程并发与多线程并发
- 数据结构与算法有哪些
- PHP实战之修改HTMl模板
- css作用域的理解--从刷今日头条遇到的js题目说起