当前位置: 首页 > news >正文

高端网站建设网站建设设计思路长沙网站快速排名提升

高端网站建设网站建设设计思路,长沙网站快速排名提升,太原自助模板建站,漳州网站建设哪家最正规目录 题目思路分析代码展示 题目 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 示例 1: 输入:intersectVal 8, listA [4,1,8,4,5], listB [5,…

目录

  • 题目
  • 思路分析
  • 代码展示


题目

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。

示例 1
在这里插入图片描述
输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,6,1,8,4,5], skipA = 2, skipB = 3
输出:Intersected at ‘8’
解释:相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。
从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,6,1,8,4,5]。
在 A 中,相交节点前有 2 个节点;在 B 中,相交节点前有 3 个节点。
— 请注意相交节点的值不为 1,因为在链表 A 和链表 B 之中值为 1 的节点 (A 中第二个节点和 B 中第三个节点) 是不同的节点。换句话说,它们在内存中指向两个不同的位置,而链表 A 和链表 B 中值为 8 的节点 (A 中第三个节点,B 中第四个节点) 在内存中指向相同的位置。
示例 2
在这里插入图片描述
输入:intersectVal = 2, listA = [1,9,1,2,4], listB = [3,2,4], skipA = 3, skipB = 1
输出:Intersected at ‘2’
解释:相交节点的值为 2 (注意,如果两个链表相交则不能为 0)。
从各自的表头开始算起,链表 A 为 [1,9,1,2,4],链表 B 为 [3,2,4]。
在 A 中,相交节点前有 3 个节点;在 B 中,相交节点前有 1 个节点。
示例3
在这里插入图片描述
输入:intersectVal = 0, listA = [2,6,4], listB = [1,5], skipA = 3, skipB = 2
输出:No intersection
解释:从各自的表头开始算起,链表 A 为 [2,6,4],链表 B 为 [1,5]。
由于这两个链表不相交,所以 intersectVal 必须为 0,而 skipA 和 skipB 可以是任意值。
这两个链表不相交,因此返回 null 。

思路分析

我们想要找到是否相交,就要找出指向相等的地址的节点·,这样就可以找到其相交的节点;
在这里插入图片描述

  1. 由于我们不知道两个链表的长度如何,所以我们要对较长的那个链表 “先走差距步”保证两个链表长度相等了之后,再移动。
    这样我们就要先算出两个链表的长度进行比较:
//计算两个链表的长度
int la = 0;
int lb = 0;
ListNode* curA = headA;
ListNode* curB = headB;while (curA)
{la++;curA->next;
}
while (curB)
{lb++;curB->next;
}
  1. 确定长链表,但是我们无法确定那个是长链表,所以我们假设A链表是长链表,如果不是,我们再作交换:
//假设headA指向的链表长
ListNode* longNode = headA;
ListNode* shortNode = headB;
if (la < lb)  //假设不成立
{longNode = headB;shortNode = headA;
}
  1. 移动长链表的指针,使指针后的两个链表的节点个数一致
int gap = abs(la - lb);
while (gap--)
{longNode = longNode->next;
}

在这里插入图片描述4. 共同向后移动,直到找到指向相同的节点

while (longNode)
{if (longNode == shortNode)return longNode;longNode = longNode->next;shortNode = shortNode->next;
}
return NULL;

在这里插入图片描述
在这里插入图片描述

代码展示

struct ListNode {int val;struct ListNode* next;
};
typedef struct ListNode ListNode;
struct ListNode* getIntersectionNode(struct ListNode* headA, struct ListNode* headB) {if (headA == NULL || headB == NULL)return NULL;//计算两个链表的长度int la = 0;int lb = 0;ListNode* curA = headA;ListNode* curB = headB;while (curA){la++;curA->next;}while (curB){lb++;curB->next;}//假设headA指向的链表长ListNode* longNode = headA;ListNode* shortNode = headB;if (la < lb)  //假设不成立{longNode = headB;shortNode = headA;}int gap = abs(la - lb);while (gap--){longNode = longNode->next;}while (longNode){if (longNode == shortNode)return longNode;longNode = longNode->next;shortNode = shortNode->next;}return NULL;
}

http://www.tj-hxxt.cn/news/92367.html

相关文章:

  • 做网站 收费满十八岁可以申请abc认证吗
  • 企业网站代码关键词优化包年推广
  • 得物网上商城网站关键词推广优化
  • 汉滨区建设局网网站网站优化软件哪个好
  • 中山快速做网站费用搜索引擎广告
  • 帮人家做网站维护百度营稍
  • 商业网站建设案例课程百度seo排名优化软件化
  • 东莞公司注册地址关键词优化心得
  • dw做网站首页怎么做长沙网站托管seo优化公司
  • 福州免费网站建站模板石家庄seo排名公司
  • 网上建设网站需要做的工作百度站长平台电脑版
  • 建设物业公司网站网络销售推广是做什么的具体
  • 成品网站源码1688danji6友情链接买卖
  • 温州网站推广站建设厦门网页搜索排名提升
  • 亚洲男女做暖网站软文推广哪个平台好
  • 济宁广告公司网站建设小姐关键词代发排名
  • 网站手机端制作软件湖北seo网站推广
  • 做网页做网站的技术人才江苏营销型网站建设
  • ai可以用来做网站吗网络服务器地址怎么查
  • 只做恐怖片的网站磁力兔子
  • 医院网站必须建设吗推广文章的注意事项
  • 网站进度表网站优化包括哪些
  • 哈尔滨+做网站公司有哪些二级域名查询网站
  • 如何做校园网站怎么营销自己的产品
  • 服务器做网站用什么环境好seo公司
  • 网站优化价格jsurl转码
  • asp网站关键字优化网站排名公司
  • 在线编辑图片的网站有哪些seo在线优化网站
  • 帝国cms怎么做网站网站维护一年一般多少钱?
  • 网站做防伪查询代码新泰网站设计