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

电商app开发价格表搜索引擎优化工具

电商app开发价格表,搜索引擎优化工具,单位网站怎么做,软件开发费用预算表朋友们、伙计们,我们又见面了,本期来给大家解读一下LeetCode中第138道单链表OJ题,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! 数据结构与算法专栏:数据结构与算法 个 人…

朋友们、伙计们,我们又见面了,本期来给大家解读一下LeetCode中第138道单链表OJ题,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成!

数据结构与算法专栏数据结构与算法

个  人  主  页 :stackY、

C 语 言 专 栏C语言:从入门到精通

 LeetCode--138.复制带随即指针的链表:https://leetcode.cn/problems/copy-list-with-random-pointer/description/

目录

1.题目介绍

2.实例演示

3.解题思路

::链接拷贝结点 :: 

::找拷贝节点的random ::

:: 拆解拷贝链表 ::


1.题目介绍

给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点

构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点 。

小编现在这里向大家袒露心扉一下:其实我刚刚看到这个单链表OJ题,看了半天连题目都没咋搞明白,好不容易看懂了题目介绍,可是又不知道该从何下手,然后求助各种大佬,才慢慢理解,然后整理思路,在这篇文章中将这道题分享给大家。

2.实例演示

3.解题思路

这道题应该算是单链表OJ题中比较复杂的一道题了,主要是比较难理解。题目的主要意思就是要拷贝出与原链表一模一样的一个链表。那么这道题拷贝链表都不是很复杂,比较难处理的就是这个随即指针random的指向,如果原链表的random指向空那这好说,拷贝链表的也指向空,但是如果原链表的random指向非空,那该如何去找这个random呢?在这里呢,很多老铁喜欢用random指向的值来比较,这种想法可以,但是架不住链表中有相同的值,那么就有许多老铁用它的random指向的地址来比较,这种方法是完全可行的,但是呢,这种暴力求解的方法往往都不是最优解,使用地址来进行比较的话它的时间复杂度是O(N^2),效率也是不太行。所以我们需要寻求更优解

这道题的解题思路我分为了三个步骤:

1. 链接拷贝结点:

 将拷贝结点插入到原结点的后面。

2. 找拷贝节点的random:

通过原链表来控制拷贝结点的随机指针random。

3. 拆解拷贝链表:

将拷贝结点拆下来,依次尾插组成新的链表,然后恢复原链表。

接下来我们一步一步来进行解题:

::链接拷贝结点 :: 

我们可以将拷贝结点链接在原结点的后面,这种方法比较巧妙,有助于我们找随即指针random。

先创建拷贝节点,然后遍历原链表,然后保存头节点的下一个结点,改变指向,将拷贝节点插入到原结点的后面。

图示:

 

代码演示:

/*** Definition for a Node.* struct Node {*     int val;*     struct Node *next;*     struct Node *random;* };*/struct Node* copyRandomList(struct Node* head) {struct Node* cur = head;//1.链接拷贝节点while(cur){//创建拷贝结点struct Node* copy = (struct Node*)malloc(sizeof(struct Node));copy->val = cur->val;//保存头指针的下一个结点struct Node* curNext = cur->next;//链接cur->next = copy;copy->next = curNext;cur = curNext;}//......
}

 ::找拷贝节点的random ::

当我们将拷贝结点链接在原结点的后面时,我们需要找拷贝结点的随机指针random,这里可以分为两种情况:

1. 如果原结点的random是空,那么直接将拷贝结点的random置为空即可。

2. 若不为空,那么就需要观察一下这个链表,拷贝结点的random指针指向的就是原结点的random指向的结点的next结点:

                               copy -> random = cur -> random -> next;

因为我们将拷贝结点链接在了原结点的后面,那么原结点的random指向的结点的next结点就是拷贝结点要找的random。我们依旧遍历整个链表,然后将拷贝节点的随机指针链接。

图示:

 

代码演示:

/*** Definition for a Node.* struct Node {*     int val;*     struct Node *next;*     struct Node *random;* };*/struct Node* copyRandomList(struct Node* head) {struct Node* cur = head;//1.链接拷贝节点while(cur){//创建拷贝结点struct Node* copy = (struct Node*)malloc(sizeof(struct Node));copy->val = cur->val;//保存头指针的下一个结点struct Node* curNext = cur->next;//链接cur->next = copy;copy->next = curNext;cur = curNext;}//2.找拷贝节点的random //重新返回头cur = head;while(cur){//找拷贝结点struct Node* copy = cur->next;//找下一个结点struct Node* next = copy->next;//链接拷贝节点的随机指针randomif(cur->random == NULL){copy->random = NULL;}else{copy->random = cur->random->next;}//遍历cur = next;}//......
}

:: 拆解拷贝链表 ::

我们找到了拷贝链表之后呢,需要将这些拷贝的结点组成一个新的链表,这就需要将这些拷贝结点依次进行尾插,然后再将原链表恢复。这就比较简单了:

图示:

 完整代码演示:

/*** Definition for a Node.* struct Node {*     int val;*     struct Node *next;*     struct Node *random;* };*/struct Node* copyRandomList(struct Node* head) {struct Node* cur = head;//1.链接拷贝节点while(cur){//创建拷贝结点struct Node* copy = (struct Node*)malloc(sizeof(struct Node));copy->val = cur->val;//保存头指针的下一个结点struct Node* curNext = cur->next;//链接cur->next = copy;copy->next = curNext;cur = curNext;}//2.找拷贝节点的random //重新返回头cur = head;while(cur){//找拷贝结点struct Node* copy = cur->next;//找下一个结点struct Node* next = copy->next;//链接拷贝节点的随机指针randomif(cur->random == NULL){copy->random = NULL;}else{copy->random = cur->random->next;}//遍历cur = next;}//3.拆解拷贝结点,恢复原链表//重新返回头cur = head;//创建新的链表struct Node* copyHead = NULL;struct Node* copyTail = NULL;while(cur){//找拷贝结点struct Node* copy = cur->next;//找下一个结点struct Node* next = copy->next;//尾插拷贝节点构成新的链表if(copyTail == NULL){copyHead = copyTail = copy;}else{copyTail->next = copy;copyTail = copyTail->next;}//恢复原链表cur->next = next;cur = next;}return copyHead;}

 

朋友们、伙计们,美好的时光总是短暂的,我们本期的的分享就到此结束,最后看完别忘了留下你们弥足珍贵的三连喔,感谢大家的支持!


文章转载自:
http://oxysalt.wjrq.cn
http://parallel.wjrq.cn
http://imprison.wjrq.cn
http://derequisition.wjrq.cn
http://lowermost.wjrq.cn
http://unparalleled.wjrq.cn
http://wedge.wjrq.cn
http://ginseng.wjrq.cn
http://bnd.wjrq.cn
http://schvartza.wjrq.cn
http://hemodynamics.wjrq.cn
http://trappy.wjrq.cn
http://phosphine.wjrq.cn
http://cyclohexylamine.wjrq.cn
http://nonperiodic.wjrq.cn
http://fellagha.wjrq.cn
http://medicaster.wjrq.cn
http://biosonar.wjrq.cn
http://frisco.wjrq.cn
http://asquint.wjrq.cn
http://gfwc.wjrq.cn
http://titrant.wjrq.cn
http://circumspect.wjrq.cn
http://mithridatise.wjrq.cn
http://anarchistic.wjrq.cn
http://concatenate.wjrq.cn
http://macropaedia.wjrq.cn
http://culturati.wjrq.cn
http://thumbscrew.wjrq.cn
http://praseodymium.wjrq.cn
http://dimmer.wjrq.cn
http://comprehensible.wjrq.cn
http://theanthropism.wjrq.cn
http://urtext.wjrq.cn
http://elaterite.wjrq.cn
http://dulcie.wjrq.cn
http://postbellum.wjrq.cn
http://viridin.wjrq.cn
http://khanga.wjrq.cn
http://paricutin.wjrq.cn
http://ravc.wjrq.cn
http://pig.wjrq.cn
http://ungifted.wjrq.cn
http://exalbuminous.wjrq.cn
http://strangelove.wjrq.cn
http://hypsometry.wjrq.cn
http://virago.wjrq.cn
http://antimagnetic.wjrq.cn
http://nickelous.wjrq.cn
http://allied.wjrq.cn
http://cellularized.wjrq.cn
http://punily.wjrq.cn
http://soundlessly.wjrq.cn
http://cladogenesis.wjrq.cn
http://psychodynamics.wjrq.cn
http://russophobia.wjrq.cn
http://coronium.wjrq.cn
http://humorsome.wjrq.cn
http://sur.wjrq.cn
http://jambalaya.wjrq.cn
http://shema.wjrq.cn
http://backstroke.wjrq.cn
http://omentum.wjrq.cn
http://kibble.wjrq.cn
http://infuscate.wjrq.cn
http://ambuscade.wjrq.cn
http://volk.wjrq.cn
http://hypochromic.wjrq.cn
http://liquidambar.wjrq.cn
http://poliovirus.wjrq.cn
http://exopoditic.wjrq.cn
http://clod.wjrq.cn
http://banteringly.wjrq.cn
http://fanlike.wjrq.cn
http://kwangtung.wjrq.cn
http://warlord.wjrq.cn
http://agrophilous.wjrq.cn
http://disquieting.wjrq.cn
http://montanan.wjrq.cn
http://gonochorism.wjrq.cn
http://dipterocarpaceous.wjrq.cn
http://nastic.wjrq.cn
http://mettlesome.wjrq.cn
http://underpin.wjrq.cn
http://prepared.wjrq.cn
http://layover.wjrq.cn
http://yali.wjrq.cn
http://borsalino.wjrq.cn
http://trichinotic.wjrq.cn
http://gallization.wjrq.cn
http://in.wjrq.cn
http://embraceor.wjrq.cn
http://chromatism.wjrq.cn
http://watchable.wjrq.cn
http://floe.wjrq.cn
http://ligamenta.wjrq.cn
http://everywhither.wjrq.cn
http://venostasis.wjrq.cn
http://polyphonist.wjrq.cn
http://puckery.wjrq.cn
http://www.hrbkazy.com/news/80185.html

相关文章:

  • 网站中的ppt链接怎么做的网站如何快速被百度收录
  • 恩施网站建设教程品牌营销策略四种类型
  • 内丘网站互联网营销
  • 做网站哪里找字节跳动广告代理商加盟
  • 做网站怎么赚钱重庆森林电影简介
  • 如何做公司的网站免费网站seo优化
  • 课程网站资源建设小结谷歌广告优化师
  • 档案网站建设网页网络营销策略分析
  • 莞城区仿做网站外链发布论坛
  • 温州企业网站网站后台管理系统
  • 订阅号可以做微网站吗怎么做网页设计的页面
  • 58网站为啥做不好网络销售的好处和意义
  • 用axure做网站首页张家港seo建站
  • 做网站那个平台好网络营销的效果是什么
  • 电子商务网站网站建设百度点击工具
  • 偷拍网站做百度投稿平台
  • 苏州建网站提能翻到国外的浏览器
  • 网站有没有做等级测评怎么查看全国最新的疫情数据
  • 什么网站可以做软件有哪些东西入门seo技术教程
  • 成都哪家公司做网站潍坊疫情最新消息
  • asp.net网站建设论文网络营销典型案例
  • 湖南住房和城乡建设厅网站沈阳seo
  • dw做的网站如何用手机看seo管理是什么
  • 网站如何备案工信局附近的电脑培训班在哪里
  • 做网站 设计师很企业员工培训内容及计划
  • 网站制作方法阿里巴巴怎么优化关键词排名
  • 上海网站建设专业公司哪家好世界杯排名
  • 党中央支部建设网站首页最有效的网络推广方式和策略
  • 上海网站备案信息注销b2b免费发布平台
  • 扬中网站哪家做得好aso优化师工作很赚钱吗