阿里巴巴2014校园招聘算法题
来源:互联网 发布:丁丁软件是什么情况 编辑:程序博客网 时间:2024/06/16 16:01
题目:两个较长的单向链表a和b,为了找出节点node满足node in a 并且node in b。请设计空间使用尽量小的算法(用c/c++,java 或者伪代码)
思路:我们定义节点的距离为节点到链表开始所经过的节点数。如果两个链表长度相同,则相交节点其在两个链表上的距离一定相等。对于长度不同的两个链表,我们可以采用对齐的方式,使其向长度短的链表对齐。这样就可以应用上面的思路。
具体算法如下:
struct node { int v; node *next; }; /* 返回链表的长度 链表为空 返回0 */ size_t listLen(node * p) { size_t num = 0; while (p!=NULL) { num++; p = p->next; } return num; } // 如果找到了 则返回指针 指向公共节点 // 如果不存在 则返回空指针 node * findFirstCommenNode(node * pheada, node * pheadb) { size_t lenA = listLen(pheada); size_t lenB = listLen(pheadb); node * plistA = pheada; node * plistB = pheadb; //调整长度,让plistA 指向较长的一个链表 if (lenA < lenB) { plistB = pheada; plistA = pheadb; size_t t = lenA; lenA = lenB; lenB = t; } while(lenA > lenB) { plistA = plistA->next; --lenA; } //一样长了 //寻找公共节点 while (plistA!=NULL && plistA != plistB) { plistA = plistA->next; plistB = plistB->next; } return plistA; }
算法的空间复杂度O(1),时间复杂度O(m+n)
- 阿里巴巴2014校园招聘算法题
- 2014年阿里巴巴校园招聘算法大题
- 2014阿里巴巴校园招聘笔试题
- 阿里巴巴2014校园招聘安全工程师笔试题
- 阿里巴巴集团2014校园招聘笔试题
- 阿里巴巴2014校园招聘笔试题
- 2014阿里巴巴校园招聘笔试
- 2014阿里巴巴校园招聘考题
- 阿里巴巴2018校园招聘运筹优化算法工程师编程题
- 阿里巴巴2014校园招聘北京站笔试题(研发/算法/系统/测试工程师)
- 阿里巴巴2014秋季校园招聘-软件研发工程师笔试题
- 2014阿里巴巴校园招聘笔试题-----研发工程师
- 阿里巴巴2014校园招聘笔试题(华科)
- 阿里巴巴集团2014秋季校园招聘笔试题
- 阿里巴巴集团2014秋季校园招聘笔试题
- 2014阿里巴巴校园招聘笔试题-----研发工程师
- 阿里巴巴集团2014秋季校园招聘笔试题
- 阿里巴巴2014校园招聘研发笔试JAVA附加题
- 企业战略(Enterprise Strategy)
- centos下ftp的架设和配置
- 记录一下自己常用的maven工程的pom.xml模板
- HOJ分类 转载自图灵老兄
- shell语法之case; if 语句
- 阿里巴巴2014校园招聘算法题
- Android常用控件之Fragment仿Android4.0设置界面
- 看看自己楼下的猫好奇感啊
- hdu 4738 Caocao's Bridges(求割边和桥)
- 2013华为校园招聘上机题 C++ 练习
- kobject和kset .
- 主项定理Master Method
- 自定义注解过滤JUnit测试类
- 总线设备模型-kobject .