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

免费的素材网站推荐打开网页就是2345网址导航

免费的素材网站推荐,打开网页就是2345网址导航,网站界面设计实训报告,用网站做自我介绍自己带环链表的相关知识点 1.判断是否有环2.寻找入环节点补充:相交链表 如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开…

带环链表的相关知识点

  • 1.判断是否有环
  • 2.寻找入环节点
    • 补充:相交链表

如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。

1.判断是否有环

方法:快慢指针追击
fast每次走两步,slow每次走一步。如果fast(或fast->next)能指向NULL,则说明无环;如果fast追击到==slow,则说明有环。

/**
* struct ListNode()
* {
* 	int val;
* 	struct ListNode* next;
* };
**/
bool hasCycle(struct ListNode *head){struct ListNode* slow = head,*fast = head;while(fast && fast->next){slow = slow->next;fast = fast->next->next;if(slow == fast)return true;}return false;
}

证明:
问题1:为什么一定会相遇,有没有可能错过,然后永远追不上?
在这里插入图片描述
slow走一步,fast走两步,假设从slow入环后最开始两个指针相差的距离为n,随着fast的追赶距离逐步减小,最后为0说明相遇。

问题2:slow一次走一步,fast一次走两步,fast可不可以走3步、4步…?

  • 假设fast走3步,那么两个指针之间距离的变化趋势为n、n-2…,即需要通过判断n的奇偶性来确定,因此就目前而言,fast走别的步数不一定,有可能错过。
  • 在这个例子中,n为偶数则相遇,n为奇数则错过,开始了下一轮循环,这时fast和slow距离相当于-1,假设周长为C,如果C-1为偶数则相遇,为奇数则永远追不上。
    fast和slow可能错过吗?
    证明:
    假设fast一次走3步,slow到达环时,fast已经走了x圈并再走了C-N。
    在这里插入图片描述
    可得:
    3 * L = L+x * C+C-N
    2 * L = (x+1) * C-N
    综上可得:只有当n为奇数、C为偶数时fast才会永远追不上,但从这个等式来看,这种情况不存在,所以不存在追不上的情况。

2.寻找入环节点

方法:
2.1 两个节点,一个从head走,另一个从meet走
证明:
在这里插入图片描述
假设fast一次走两步。
2 * slow = fast
2 * (L+N) = L+x * C+N
L+N = x * C
L = x * C-N
L = (x-1) * C+(C-N)

struct ListNode* detectCycle(struct ListNode* head){struct ListNode* slow = head,*fast = head;while(fast && fast->next){slow = slow-next;fast = fast->next->next;//相遇if(slow == fast){struct ListNode* meet = slow;while(meet != head){meet = meet->next;head = head->next;}return meet;}}return NULL;
}

2.2 将相遇节点的下一个节点置空,这样就转换为了求链表相交节点的问题
在这里插入图片描述

struct ListNode* detectCycle(struct ListNode* head){struct ListNode* slow = head,*fast = head;while(fast && fast->next){slow = slow->next;fast = fast->next;//相遇if(slow == fast){struct ListNode* meet = slow;struct ListNode* newhead = meet->next;meet->next = NULL;return getIntersectionNode(head,newhead);}}return NULL;
}

补充:相交链表

两个链表的next指向同一个节点,判断两个尾指针是否相等(地址判断)。
思路1:A链表中的节点依次与B所有节点比较,相等即交点。
O(N^2)/O(M * N),时间复杂度过大
思路2:使长链表与短链表长度一样,一起遍历比较,相等即交点。
时间复杂度为O(N)
在这里插入图片描述

struct ListNode* getIntersectionNode(struct ListNode* headA,struct ListNode* headB){struct ListNode* curA = headA,*curB = headB;int lenA = 1,lenB = 1;//当下一个节点为空时不进入循环,尾结点没有被算入长度while(curA->next){curA = curA->next;++lenA;}while(curB->next){curB = curB->next;++lenB;}//尾结点不相等就是不相交if(curA != curB){return NULL;}//长的先走差距步,再同时走,第一个相等就是交点//假设法int gap = abs(lenA-lenB);struct ListNode* longList = headA,*shortList = headB;if(lenB > lenA)//如果上述长短情况不符合则互换{longList = headB;shortList = headA;}while(gap--){longList = longList->next;}while(longList != shortList){longList = longList->next;shortList = shortList->next;}return shortList;
}

文章转载自:

http://2nU76HjZ.qpsdq.cn
http://FzQw5ySL.qpsdq.cn
http://sF5CGXXj.qpsdq.cn
http://9oiWO34E.qpsdq.cn
http://ZhHaVGss.qpsdq.cn
http://sPT1m4vz.qpsdq.cn
http://CnOy9cV3.qpsdq.cn
http://TPm76BEe.qpsdq.cn
http://US60aBzP.qpsdq.cn
http://QAnEZZKB.qpsdq.cn
http://bfLL8uPS.qpsdq.cn
http://6AMYIT95.qpsdq.cn
http://5vUeDJQg.qpsdq.cn
http://PeuLoGBH.qpsdq.cn
http://UAlU7Adx.qpsdq.cn
http://AAbeX1Yz.qpsdq.cn
http://BWsVClTP.qpsdq.cn
http://pkCcHy4c.qpsdq.cn
http://lZwTOOaZ.qpsdq.cn
http://uaHeMlFM.qpsdq.cn
http://O6WDbJTa.qpsdq.cn
http://ZEAkiOTA.qpsdq.cn
http://7IMcESEl.qpsdq.cn
http://Lh15hnw9.qpsdq.cn
http://Om7MQlHH.qpsdq.cn
http://s2x8SckU.qpsdq.cn
http://vTVNNotk.qpsdq.cn
http://MjJZh6rv.qpsdq.cn
http://GrFlY66D.qpsdq.cn
http://H5g9C3Oz.qpsdq.cn
http://www.dtcms.com/wzjs/705024.html

相关文章:

  • 黑龙江省生产建设兵团知青网站网站设计的可行性分析
  • 自已如何建网站保姆给老人做爰神马网站
  • 最好科技广州网站建设网站下载视频软件
  • 网站页面做专题的步骤做一个公众号多少钱
  • 做翻译小说网站赚钱吗哈尔滨网站建设教程
  • 做gif有什么网站7154电商平台官网
  • 网站首页设计说明深圳市住建局官网查询
  • 洛江区住房和城乡建设局网站做时间轴的在线网站
  • 怎么做和美团一样的网站第一模板网站
  • 全球最大设计网站成品短视频app下载有哪些软件可以用
  • 百度竞价 百度流量 网站权重c2c代表性企业网站
  • 公司新成立想要搭建网站怎么做信阳公司网站建设
  • 湖北网站建设怎样课件app制作教程
  • 哪里可以做免费的物流网站网络规划设计师思维导图
  • 什么不属于网站推广软件微信小程序模板样式
  • 做直播网站要多少钱网站建设合同怎么写
  • 国外html5网站模板黄冈免费网站建设平台
  • 网站中的滑动栏怎么做的深圳seo论坛
  • 玉溪做网站百度指数查询手机版
  • 珠海教育局系统网站怎么建设公益网站
  • 网站域名到期会怎么样合肥装修
  • 建设厅电工证查询网站广州市做网站
  • 上高县城乡规划建设局网站网站建设好怎么发布
  • 做游戏网站在哪里找wordpress后台地址
  • 网站图片设置教程wordpress 店铺插件
  • 红色大气网络公司企业网站源码_适合广告设计泰安新浪乐居房产网
  • 成都建网站公司电话改 wordpress 主题 颜色
  • 手机端网站首页怎么做靖江市网站建设
  • 网站开发毕业答辩演讲稿范文手机端网站建设哪家好
  • 不收费的企业查询网站自己做视频类网站用哪个cms