AcWing 66. 两个链表的第一个公共结点 (2012算法题)
2024-10-21 23:26:27
题目:
输入两个链表,找出它们的第一个公共结点。
当不存在公共节点时,返回空节点。
数据范围
链表长度 [1,2000]。
保证两个链表不完全相同,即两链表的头结点不相同。
样例
给出两个链表如下所示:
A: a1 → a2
c1 → c2 → c3
B: b1 → b2 → b3
输出第一个公共节点c1
算法思想:假设公共部分长度为c,A链非公共部分长度为a,b非公部分长度为b。假设有两个指针p1与p2,p1移动途径为a->c->b(从a开始遍历链表A,结束后再从B的链头开始遍历b。同步的p2移动途径为b->c->a(从b开始遍历链表B,结束后再从A的链头开始遍历a。可以看到两者最后的移动距离都是a+b+c,此时必然会相遇。)
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode *findFirstCommonNode(struct ListNode *headA, struct ListNode *headB) {
struct ListNode *q,*p;
q = headB;
p = headA;
while (p != q)
{
if (p)
{
p = (*p).next;
}
else{
p = headB;
}
if (q)
{
q = (*q).next;
}
else{
q = headA;
}
}
return p;
}
最新文章
- Spring+SpringMvc+Mybatis框架集成搭建教程二(依赖配置及框架整合)
- hive 普通创建表和跟新列操作
- 下载包含src,tgz,zip的文件
- HDU 4998 (点的旋转) Rotate
- 让sublime text 3默认新建GBK文件
- iOS之XIB拖拽scrollView
- Python里的map、reduce、filter、lambda、列表推导式
- C#调用API函数EnumWindows枚举窗口的方法
- stringstream clear()的疑问 - yuanshuilee的日志 - 网易博客
- windows下apache如何完整卸载?
- 【BZOJ 3754】: Tree之最小方差树
- luogu P5322 [BJOI2019]排兵布阵
- Unity 常用插件1
- 喵哈哈村的魔法考试 Round #19 (Div.2) 题解
- Js实现页面关键字高亮显示
- 【刷题】BZOJ 4000 [TJOI2015]棋盘
- web网页上面调用qq
- 反爬虫破解系列-汽车之家利用css样式替换文字破解方法
- font:12px/1.5 tahoma, arial, \5b8b\4f53, sans-serif详解
- Week Five