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

外贸网站找人建设wordpress默认页面设置

外贸网站找人建设,wordpress默认页面设置,自己做一个小程序需要多少钱,怎样添加音乐到wordpressW...Y的主页 😊 代码仓库分享 💕 前言: 今天是链表顺序表OJ练习题最后一次分享,每一次的分享题目的难度也再有所提高,但是我相信大家都是非常机智的,希望看到博主文章能学到东西的可以一键三连关注一下博主…

W...Y的主页 😊

代码仓库分享 💕


前言:

 今天是链表顺序表OJ练习题最后一次分享,每一次的分享题目的难度也再有所提高,但是我相信大家都是非常机智的,希望看到博主文章能学到东西的可以一键三连关注一下博主。

话不多说,我们来看今天的OJ习题.。

【leetcode 142.环形链表II】

OJ链接

给定一个链表的头节点  head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null

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

不允许修改 链表。

示例 1:

输入:head = [3,2,0,-4], pos = 1
输出:返回索引为 1 的链表节点
解释:链表中有一个环,其尾部连接到第二个节点。

示例 2:

输入:head = [1,2], pos = 0
输出:返回索引为 0 的链表节点
解释:链表中有一个环,其尾部连接到第一个节点。

示例 3:

输入:head = [1], pos = -1
输出:返回 null
解释:链表中没有环。

题目函数接口:

head:目标链表


分析:在上一篇博客中,我们讲述了如何寻找相遇点,创建两个指针slow与fast,fast的速度为slow的两倍,最终会在环中追及到。

下面讲述的方法与昨天的有关联: 

slow进入环后只会走不到一圈就会被fast追上,如果L足够长,环足够小fast会在环中走n圈(n>=1)。

我们分析完,题目就会迎刃而解。我们只需要先找到相遇点,然后一个指针从起点走,一个指针从相遇点走,它们相遇后的地址就是我们要的答案!!!

代码演示:

struct ListNode *detectCycle(struct ListNode *head) {struct ListNode *fast = head;struct ListNode *slow = head;while(fast && fast->next){fast = fast->next->next;slow = slow->next;if(fast == slow ){struct ListNode *cur = head;while(cur != slow){cur = cur->next;slow = slow->next;}return slow;}}return NULL;
}

 再给大家提供一种思路!!!

思路二:我们可以先找到相遇点,然后将环从相遇点截断,这个链表就变成了相交链表,然后找到相交链表的相交点即可。

这个想法很简便也很大胆,不知道相交链表已经做题方法的可以在顺序表链表OJ题(2)->【数据结构】中找到相交链表的介绍以及相关题型。

 

struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {int lena = 1;int lenb = 1;struct ListNode *cura = headA;struct ListNode *curb = headB;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 *llist = headA;struct ListNode *slist = headB;if(lena > lenb){;}else{llist = headB;slist = headA;}while(gap--){llist = llist->next;}while(llist != slist){llist = llist->next;slist = slist->next;}return llist;
}
struct ListNode *detectCycle(struct ListNode *head) {struct ListNode *fast = head;struct ListNode *slow = head;while(fast && fast->next){fast = fast->next->next;slow = slow->next;if(fast == slow){struct ListNode *meet = slow;struct ListNode *newhead = meet->next;meet->next = NULL;return getIntersectionNode(newhead, head);}} return NULL;
}

 【leetcode 138.复制带随机指针的链表】

OJ链接

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

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

例如,如果原链表中有 X 和 Y 两个节点,其中 X.random --> Y 。那么在复制链表中对应的两个节点 x 和 y ,同样有 x.random --> y 。

返回复制链表的头节点。

用一个由 n 个节点组成的链表来表示输入/输出中的链表。每个节点用一个 [val, random_index] 表示:

  • val:一个表示 Node.val 的整数。
  • random_index:随机指针指向的节点索引(范围从 0 到 n-1);如果不指向任何节点,则为  null 。

你的代码只接受原链表的头节点 head 作为传入参数。

示例 1:

输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]
输出:[[7,null],[13,0],[11,4],[10,2],[1,0]]

示例 2:

输入:head = [[1,1],[2,1]]
输出:[[1,1],[2,1]]

示例 3:

输入:head = [[3,null],[3,0],[3,null]]
输出:[[3,null],[3,0],[3,null]]

题目函数接口:

head:目标链表


 这道题比较复杂,拷贝一般链表非常简单,但是这个链表比较特殊,在结构体中加入了随机指针,如果我们先将无random指针链表拷贝一份,再去寻找random指针在链表中指向的位置,会非常麻烦,我们必须不停遍历链表,时间复杂度就非常高O(n^2)。而且代码也会非常的复杂,不建议使用暴力解法。

现在唯一难点就是如何找到新链表中random对应的位置,因为创建新链表与目标链表的地址是没有任何关联的。

但是接下来的方法相对于暴力解法会非常轻松,这个想法也是非常新颖的!!

思路:

我们在原链表中每个结构体的后面插入新的结构体,将对应的内容拷贝到插入的新结构体中,就是这样:

这样我们就可以很方便的寻找random,创建一个指针copy,就比如上图中的13节点,我们需要拷贝13中的random到后面连接的新结构体中,只需要找到旧结构体中random指向的内容,让旧结构体的next的next->random等于copy指向的random即可。 最后一步只需要将完全拷贝好的新结构体拿下来尾插,组成一个新链表即可完成!!!

理论形成,时间开始:

struct Node* copyRandomList(struct Node* head) {struct Node*cur = head;while(cur){struct Node*next = cur->next;struct Node*copy = (struct Node*)malloc(sizeof(struct Node));copy->val = cur->val;cur->next = copy;copy->next = next;cur = next;}cur = head;while(cur){struct Node*copy = cur->next;if(cur->random == NULL){copy->random = NULL;}else{copy->random = cur->random->next;}cur = copy->next;}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;
}

 新节点插入老节点中、copy指针的寻找新链表……都需要我们画图更好的理解。

这两道题都是想法比较前卫,一般方法比较困难的题,虽然用c语言比较麻烦,但是等到后面我们掌握了map以及哈希结构就会非常简单。

以上就是本次OJ题目的全部内容,希望大家看完有收获,一键三连支持一下博主吧!!!😘😘 

http://www.yayakq.cn/news/22563/

相关文章:

  • 国内网站有哪些网站怎么做下载网页代码
  • 网站建设是广告吗什么专业就业前景好
  • 提供镇江网站建设新乡网站建设公司
  • 属于您自己的网站建设wordpress安装的模板
  • 彩票网站平台衡阳企业网站建设价格
  • 网站开发费用如何入帐wordpress 备案 域名
  • 无锡做网站费用wordpress 问卷调查插件
  • 提高网站流量电商网站 建设目标详细说明
  • wordpress网站配置文件绍兴网络科技有限公司
  • 帮客户做网站图片被告侵权怎样做电商生意
  • 济南做网站的公司哪家好网站标题权重吗
  • 苏州建设网站微信公众号新媒体运营和ui设计哪个好
  • 如何做网站家具导购网站宽度 1000px
  • 商场网站建设公司中国免费网站服务器免费下载
  • 太原做网站个人wordpress添加新建标签页
  • 网站建设销售销售流程图wordpress安装插件出错
  • 淮南网站推广中国建设教育业协会网站
  • 新手怎么用DW建设一个网站建设银行网网站打不开
  • 站长之家网址ip查询营销型网站建设托管
  • 网站建设优化服务精英哈尔滨网站制作工程
  • 哪个网站可以做电视背景墙wordpress翻译教程
  • 哪些网站做任务可以赚钱阜阳做网站公司
  • 沈阳哪有做网站的网站建设管理工作经验介绍
  • 企业网站无锡郑州网站建设 云极
  • 太原建站模板网站上海自贸区公司注册
  • 茶叶销售网站源代码网络规划设计师考试全程指导
  • php在网站后台建设中的优势青州网站建设推广
  • 如何向雅虎提交网站做旅游网站运营
  • 网站建设合同或方案书深圳网站建站建设公司地址
  • 广州h5网站北京百度推广seo