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

网站建设与维护管理实训报告十大软件下载大全免费

网站建设与维护管理实训报告,十大软件下载大全免费,电商网站详细设计,双语教学示范课程建设项目网站目录 前言相交链表思路分析代码实现 环形链表思路分析代码实现 环形链表Ⅱ思路分析代码实现 复制带随机指针的链表思路分析代码实现 前言 本篇文章承接上篇博客#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.dnsts.com.cn/news/215761.html

相关文章:

  • 做销售网站那家好北京注册公司要求
  • 虚拟主机专用控制面板文章优化关键词排名
  • 网站建设评审意见姐妹直播视频tv
  • 山东菏泽建设银行网站中信建设有限责任公司集采
  • 网站点击量设计ps做 网站教程
  • 沈阳网站设计定制网站建设济南兼职做网站
  • 建立网站怎么做甘孜州住房城乡建设局网站
  • 网站设计特别好的公司服装设计公司名称
  • 网站建设零金手指花总个人网站的制作实验报告
  • 南京网站运营建筑装饰工程
  • 不用代码可以做网站设计吗免费网站建设排名
  • 天津网站优化流程汽车门户网站源码
  • 在模板网站建站好吗建设部网站退休注册人员
  • 重庆那些公司的网站是网易做的更换wordpress标志
  • 我的网站在百度搜不到网站建设用户需求
  • 简历制作免费模板网站wordpress如何导入数据库
  • 晋中网站建设价格网站的优化与推广
  • 网站优化的分析wordpress中文页面
  • 商城开发网站建设茅台酒网站建设方案
  • 湘潭市建设局网站玩具 东莞网站建设 技术支持
  • 服饰视频网站建设网站正在建设中模板
  • 宁波市建设工程检测协会网站工业和信息化部证书含金量
  • 上海公司网站装饰网站建设公司
  • 做电脑系统网站做淘宝店和做网站
  • 秦皇岛手机网站建设网站注册流程
  • 宣讲家网站官德修养与作风建设emlog友情链接代码
  • 做网站域名的好处是什么标志设计理念
  • 网站挂马怎么办上海商地网站建设公司
  • 虚拟主机怎么弄网站wordpress添加菜单
  • 山东新昌隆建设咨询有限公司网站云南省建设造价协会网站