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

深圳app网站建设陈俊兵南昌专业做网站公司

深圳app网站建设陈俊兵,南昌专业做网站公司,里水九江网站建设,没建网站 备案目录 前言相交链表思路分析代码实现 环形链表思路分析代码实现 环形链表Ⅱ思路分析代码实现 复制带随机指针的链表思路分析代码实现 前言 本篇文章承接上篇博客#xff0c;继续对部分经典链表OJ题进行讲解 相交链表 先来看题目描述 思路分析 这道题我们还是首先来判断一… 目录 前言相交链表思路分析代码实现 环形链表思路分析代码实现 环形链表Ⅱ思路分析代码实现 复制带随机指针的链表思路分析代码实现 前言 本篇文章承接上篇博客继续对部分经典链表OJ题进行讲解 相交链表 先来看题目描述 思路分析 这道题我们还是首先来判断一下链表是否相交即看两条链表的最后一个节点是否为同一个。如果不相交则返回空如果相交则进行下一步。 如果两条链表相交我们可以考虑让较长的链表走它们的长度差步使得两条链表此时的长度一样然后再同时走直到两条链表的节点指向同一块区域这个节点就是相交点。 代码实现 代码实现如下 struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {struct ListNode* tailAheadA;int lenA0;struct ListNode* tailBheadB;int lenB0;while(tailA){tailAtailA-next;lenA;}while(tailB){tailBtailB-next;lenB;}if(tailA!tailB){return NULL;}int tmpabs(lenA-lenB);struct ListNode* llistheadlenAlenB?headA:headB;struct ListNode* slistheadlenAlenB?headB:headA;while(tmp--){llistheadllisthead-next;}while(1){if(llistheadslisthead){break;}llistheadllisthead-next;slistheadslisthead-next;}return llisthead;}环形链表 先来看题 思路分析 这道题我们采用快慢指针的思路这样如果是环形链表当快指针和慢指针都进入环时快指针总能与慢指针遇到为保证效率和可实现度我们让快指针一次走两步慢指针一次走一步。 如果快指针指向空且快指针的下一个节点也指向空因为要保证快指针能一次走两步,说明该链表并没有形成环。 代码实现 代码如下 bool hasCycle(struct ListNode *head) {if(headNULL)return false;struct ListNode* slowhead;struct ListNode* fasthead;while(fastslowfast-next){slowslow-next;fastfast-next-next;if(slowfast)return true;}return false; }环形链表Ⅱ 这道题是上一道题的变式也借鉴了上一题的思路。 来看题 思路分析 我们还是按照上一题的解题思路判断链表是否形成了环。如果没有则返回空如果是环形链表我们继续进行下一步。 在确定存在环时此时快指针和慢指针正好相遇实际上此时头节点到链表进入环的节点的距离和此时快/慢指针到链表进入环的结点的距离相等。所以此时我们只需要让头指针和快/慢指针同时走到相遇时即为我们要找的节点。 代码实现 代码实现如下 struct ListNode *detectCycle(struct ListNode *head) {struct ListNode* slowhead;struct ListNode* fasthead;while(fastfast-next){slowslow-next;fastfast-next-next;if(fastslow){while(slow!head){slowslow-next;headhead-next;}return head;}}return NULL;}复制带随机指针的链表 思路分析 这道题的本意是让我们复制一次这个链表我们这里采用的思路是就在原有的链表上操作1先在每一个节点后复制一个一样的节点2再把所有复制出来的节点与原链表断开3再链接起来这样我们就可以得到一个和原链表一摸一样的新链表了虽然思路听起来很简单但是想要真正弄清楚里面所有指针到底该指向哪里同时又要避免野指针的情况出现还是非常有难度的下面我把操作分为三部分来讲解。 在每一个节点后复制一个一模一样的节点链接起来 首先我们可以先判断一下链表是否为空如果为空就直接返回空指针否则我们按下图进行操作以三个节点为例 把所有复制出来的节点有原链表断开 最后将复制出来的节点连接再一次即可。 代码实现 代码实现如下 struct Node* copyRandomList(struct Node* head) {if(headNULL){return NULL;}for(struct Node* curhead;cur!NULL;curcur-next-next){struct Node* newnode(struct Node*)malloc(sizeof(struct Node));newnode-valcur-val;newnode-nextcur-next;cur-nextnewnode;}for(struct Node* curhead;cur!NULL;curcur-next-next){struct Node* newnodecur-next;newnode-random(cur-random!NULL)?cur-random-next:NULL;}struct Node* newheadhead-next;for(struct Node* curhead;cur!NULL;curcur-next){struct Node* newnodecur-next;cur-nextcur-next-next;newnode-next(newnode-next!NULL)?newnode-next-next:NULL;}return newhead; }以上就是本章全部内容如有出入欢迎大佬指正。
http://www.hkea.cn/news/14392321/

相关文章:

  • 网站备案 写共享可以吗百度下载并安装最新版
  • 网站开发属于哪个税收分类注册个公司大概多少钱
  • 建设银行短信带网站官方网站套餐
  • 网页设计与制作个人网站泉州模板网站建站
  • 淮安市城市建设档案馆网站win7 iis网站设置
  • 邢台城乡规划局建设工程网站2345网址导航大全
  • com网站域名可以是汉字吗wordpress 图片展示 插件
  • 做衣服哪个网站好德州做网站dzqifan
  • 青岛网站关键词推广百度竞价排名医院事件
  • 网站色彩学广州番禺人才网
  • 解决问题的网站比特币矿池网站怎么做
  • 中国能源建设集团网站群学校语言文字网站建设
  • 淄博网站建设优化如何做网站的主页
  • 网站开发团队需配备什么岗位安卓aso关键词优化
  • 网站后台模版旅游公共信息服务网站建设及服务质量标准
  • 网站关键词优化实验结果分析手机商城及手机价格
  • 做个网站app吗韩国还有出线的可能
  • xp系统中做网站服务器上海自适应网站
  • 做蛋糕有哪些网站呼和浩特建设工程信息网站
  • 咋样建设网站专业网站建设科技公司
  • wordpress网站采集插件专门做网站的公司 南阳
  • 做网站诊断步骤关于文化建设网站
  • 济宁嘉祥网站建设哪个网站做自媒体比较好
  • 做百度推广需要有自己的网站吗华秋电子商城
  • 浅谈高校网站群的建设群晖wordpress外网
  • 做更好的自己 网站网站设计就业岗位分析
  • wps可以做网站吗手机怎么做软件开发
  • 网站维护的方式有哪几种网址缩短链接
  • 网站流量查询网站统计查询校园网站建设成本
  • 免费的韩国网站服务器wordpress主题底部版权