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

织梦做分类信息系统网站杭州做百度推广的公司

织梦做分类信息系统网站,杭州做百度推广的公司,网站大气是什么意思,vps做vpn svn和网站给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后&#xff…

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

图示两个链表在节点 c1 开始相交

题目数据 保证 整个链式结构中不存在环。

注意,函数返回结果后,链表必须 保持其原始结构 。


示例 1:

输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3
输出:Intersected at '8'
解释:相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。
从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。
在 A 中,相交节点前有 2 个节点;在 B 中,相交节点前有 3 个节点。

示例 2:

输入:intersectVal = 2, listA = [0,9,1,2,4], listB = [3,2,4], skipA = 3, skipB = 1
输出:Intersected at '2'
解释:相交节点的值为 2 (注意,如果两个链表相交则不能为 0)。
从各自的表头开始算起,链表 A 为 [0,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
输出:null
解释:从各自的表头开始算起,链表 A 为 [2,6,4],链表 B 为 [1,5]。
由于这两个链表不相交,所以 intersectVal 必须为 0,而 skipA 和 skipB 可以是任意值。
这两个链表不相交,因此返回 null 。

提示:

  • listA 中节点数目为 m
  • listB 中节点数目为 n
  • 0 <= m, n <= 3 * 104
  • 1 <= Node.val <= 105
  • 0 <= skipA <= m
  • 0 <= skipB <= n
  • 如果 listA 和 listB 没有交点,intersectVal 为 0
  • 如果 listA 和 listB 有交点,intersectVal == listA[skipA + 1] == listB[skipB + 1]

进阶:你能否设计一个时间复杂度 O(n) 、仅用 O(1) 内存的解决方案?


代码:

/*** 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) {ListNode *curA = headA;ListNode *curB = headB;int lenA = 0, lenB = 0, gap;while(curA != nullptr){lenA++;curA = curA->next;}while(curB != nullptr){lenB++;curB = curB->next;}curA = headA;curB = headB;if(lenA > lenB) gap = lenA - lenB;else gap = lenB -lenA;// cout << gap;for(;gap > 0; gap--){if(lenA > lenB) curA = curA->next;else curB = curB->next;}while(curA != nullptr && curB != nullptr){if(curA == curB) return curA;curA = curA->next;curB = curB->next;}return nullptr;}
};

解题思路:

(1)理解题意,如果出现重合,那么在交点之后,每个节点都相同。那么最长的重合,只能是最短的链表的长度。

(2)首先,计算两个链表的长度。

(3)接着,让短的链表先走 “两个链表的长度差值”。

(4)最后,比较剩余节点是否相等,相等则返回节点,不等则返回nullptr。

http://www.dtcms.com/wzjs/237003.html

相关文章:

  • 网络公司做什么业务上海seo优化服务公司
  • 建网站要多长时间适合小学生的新闻事件
  • .ent做的网站有哪些aso优化运营
  • 海西州网站建设公司给网站做seo的价格
  • uc做购物网站广告软文200字
  • 专业定制网站建设代理百度推广联系方式
  • 网站全景看图怎么做专门搜索知乎内容的搜索引擎
  • 海口做网站公司那家好服务营销案例100例
  • 网站开发 方案 报价谷歌seo外链平台
  • 隆尧做网站网络营销工具包括
  • 网站怎么做的支付宝九江seo公司
  • 吉林市做网站百度免费官网入口
  • 详细网络设计方案seo优化网站查询
  • 1688网站怎么做十大seo公司
  • 胶州网站建设dch100女生做sem还是seo
  • 学校网站建设招标方案磁力多多
  • 京东企业集团网站建设方案搜索软件排行榜前十名
  • 自己怎样建立网站北京优化靠谱的公司
  • 福州高端网站建设推广营销网络
  • 用laravel做的网站宁波网络推广联系方式
  • 广东海外建设监理有限公司官方网站如何在百度发视频推广
  • 连云港网站建设开发网站seo排名优化工具
  • 网站建设功能分为几种广东病毒感染最新消息
  • 网站文章怎么做才能被收录全国疫情最新情况
  • 优质企业网站建设百度移动端优化
  • 网站开发可以做什么百度指数电脑端查询
  • 免费网站建设价格网站推广网
  • 静态网站 动态线上广告推广平台
  • 高端的食品行业网站开发外链免费发布平台
  • 外包网站建设价格南宁seo做法哪家好