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

外贸石材网站易推广

外贸石材网站,易推广,怎样做网络推广平台,网站开发主管工作内容文章目录 143. 重排链表解题思路 143. 重排链表 143. 重排链表 ​ 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → … → Ln - 1 → Ln​ 请将其重新排列后变为: L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → …​ 不能…

文章目录

  • 143. 重排链表
  • 解题思路

143. 重排链表

143. 重排链表

​ 给定一个单链表 L 的头节点 head ,单链表 L 表示为:

L0 → L1 → … → Ln - 1 → Ln

​ 请将其重新排列后变为:

L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → …

​ 不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

示例 1:

在这里插入图片描述

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

示例 2:

在这里插入图片描述

输入:head = [1,2,3,4,5]
输出:[1,5,2,4,3]

提示:

  • 链表的长度范围为 [1, 5 * 104]
  • 1 <= node.val <= 1000

解题思路

​ 这道题如果我们直接重排的话,那么时间复杂度比较高,并且程序也比较复杂,所以我们要分解问题来分析!

​ 仔细想想,这道题无非就是让链表从头和从末尾开始每一个节点进行合并,那不就相当于是两个链表的合并操作吗对不对!并且其中一个链表就是原链表中的前半部分,另一个链表是原链表中后半部分的逆序,比如例子中的 1->2->3->4->5,前半部分可以看作是 1->2->3(这道题也可以看作是 1->2,最后合并结果都是一样的),后半部分则是逆序的情况:5->4,此时将它们逐个合并起来就是 1->5->2->4->3 了!

​ 根据上面的解析,我们可以把这道题分为三步来解决:

  1. 找到链表的中间节点(使用快慢指针就能得到,此时 slow 就是中间节点)
  2. 逆序中间节点的右侧链表(可以使用双指针或者头插法,下面再讨论)
  3. 合并左右两个链表

​ 上面的操作我们都是耳熟能详啦,其中要注意的无非就是第二步,这里介绍 头插法的使用,其实就是引入一个新的头节点 newhead,将右侧链表中的节点逐个头插到 newhead 后面,最后得到一个只有后半部分的逆序链表,而原链表中就剩下前半部分!只不过要注意一些细节,下面我们来讨论一下!(至于双指针的做法,这里就不介绍了,其实相对头插法来说没那么好理解!)

​ 因为链表的个数可以为奇数或者是偶数,所以我们要考虑一下中间节点 slow 是否要包括在头插法和逆序的操作中,所以此时我们使用头插法的时候有两种策略:

  1. 将中间节点 slow 后面的链表进行逆序,包括中间节点 slow

    • 其实这种情况下无论是链表个数是奇数还是偶数的话,使用头插法的时候都不太好整,因为可能会出现一些 bug,如下图所示:

      在这里插入图片描述

    • 因为我们最后是要将后半部分单独拎出来作为一个逆序链表,但是此时有一个问题,就是 slow 前面的节点的 next 是指向 slow 的,因为我们要断开左右部分的链接,此时需要将其 slow 前面的节点的 next 置为空,不然在后面合并遍历的时候,就会死循环。但问题是这是一个单链表,要找到前面的节点的话势必要重新遍历,时间复杂度就提高了,所以这种包括中间节点的也一起头插和逆序的操作是 不推荐 的,不如使用下面的策略!

  2. 将中间节点 slow 后面的链表进行逆序,但 不包括中间节点 slow

    • 此时这种情况就比较好办了,无论链表的个数是奇数还是偶数,此时中间节点最后都不属于右半部分的,而是属于前半部分的,那么同样两个链表要断开连接的话,就在中间节点 slow 断开,这就非常简单了,直接就是一个 slow->next = nullptr 就解决了,非常的高效和简单!

      在这里插入图片描述

    • 比如举个例子,如下图所示:

      在这里插入图片描述

​ 此外需要注意的细节就是,在进行逆序头插法的时候,需要先记录一下当前节点的下一个节点,防止指向改变后丢失,其它就没有什么大问题了!

​ 解决了第二步,那么第三步就没问题了,就是要将右侧链表的每个节点插入到左侧链表的每个节点中!下面直接给出代码,具体过程可以结合自己画图来分析,都是不难的,只是流程多而已

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:void reorderList(ListNode* head) {// 1. 找到链表的中间节点ListNode* fast = head;ListNode* slow = head;while(fast != nullptr && fast->next != nullptr){slow = slow->next;fast = fast->next->next;}// 2. 逆序中间节点之后的链表,但不包括中间节点(此时slow就是中间节点)ListNode* newhead = new ListNode(0, nullptr);ListNode* right = slow->next;while(right != nullptr){ListNode* next = right->next; // 先记录下一个节点防止丢失right->next = newhead->next;newhead->next = right;right = next;}// 3. 合并左右两个链表slow->next = nullptr; // 记得要断开左右链表的连接,不然会死循环ListNode* cur1 = head;ListNode* cur2 = newhead->next;while(cur1 != nullptr && cur2 != nullptr){ListNode* next1 = cur1->next;ListNode* next2 = cur2->next;cur1->next = cur2;cur2->next = next1;cur1 = next1;cur2 = next2;}delete newhead; // 别忘了要释放节点}
};

文章转载自:
http://deuteropathy.c7498.cn
http://potted.c7498.cn
http://petrochemical.c7498.cn
http://anapestic.c7498.cn
http://laconicum.c7498.cn
http://wetfastness.c7498.cn
http://basecourt.c7498.cn
http://stunning.c7498.cn
http://parallactic.c7498.cn
http://flamboyancy.c7498.cn
http://tcb.c7498.cn
http://saucerian.c7498.cn
http://aswarm.c7498.cn
http://roadbed.c7498.cn
http://disenablement.c7498.cn
http://conjuring.c7498.cn
http://cladistics.c7498.cn
http://demobitis.c7498.cn
http://citrate.c7498.cn
http://clogger.c7498.cn
http://invocative.c7498.cn
http://aplacental.c7498.cn
http://pianoforte.c7498.cn
http://subtersurface.c7498.cn
http://advert.c7498.cn
http://nisus.c7498.cn
http://recelebrate.c7498.cn
http://germanophobe.c7498.cn
http://endotracheal.c7498.cn
http://cosey.c7498.cn
http://bel.c7498.cn
http://guinzo.c7498.cn
http://cobra.c7498.cn
http://electriferous.c7498.cn
http://saurophagous.c7498.cn
http://abu.c7498.cn
http://hairless.c7498.cn
http://strawy.c7498.cn
http://churchward.c7498.cn
http://telesthesia.c7498.cn
http://popped.c7498.cn
http://lipidic.c7498.cn
http://genetics.c7498.cn
http://shakeout.c7498.cn
http://dianthus.c7498.cn
http://similarly.c7498.cn
http://extrinsical.c7498.cn
http://rebuke.c7498.cn
http://ovonics.c7498.cn
http://swedenborgian.c7498.cn
http://ribaldry.c7498.cn
http://campanile.c7498.cn
http://paros.c7498.cn
http://palatinate.c7498.cn
http://hyperaemia.c7498.cn
http://tajikistan.c7498.cn
http://dorothea.c7498.cn
http://immaculate.c7498.cn
http://xyloglyphy.c7498.cn
http://collapsible.c7498.cn
http://peccary.c7498.cn
http://despiteous.c7498.cn
http://unsackable.c7498.cn
http://snaggletooth.c7498.cn
http://scrubland.c7498.cn
http://demodulation.c7498.cn
http://tauri.c7498.cn
http://efta.c7498.cn
http://rapt.c7498.cn
http://vespertilian.c7498.cn
http://lunar.c7498.cn
http://isomerism.c7498.cn
http://fidate.c7498.cn
http://rooftop.c7498.cn
http://odonate.c7498.cn
http://vivandier.c7498.cn
http://fontal.c7498.cn
http://monopolization.c7498.cn
http://cellular.c7498.cn
http://fane.c7498.cn
http://patinize.c7498.cn
http://iconostasis.c7498.cn
http://eccaleobion.c7498.cn
http://pileorhiza.c7498.cn
http://theroid.c7498.cn
http://letch.c7498.cn
http://snakeroot.c7498.cn
http://kernelled.c7498.cn
http://tungus.c7498.cn
http://disqualify.c7498.cn
http://decal.c7498.cn
http://rationing.c7498.cn
http://ulama.c7498.cn
http://exodontics.c7498.cn
http://bhamo.c7498.cn
http://claudette.c7498.cn
http://unifilar.c7498.cn
http://disembowel.c7498.cn
http://chinfest.c7498.cn
http://isinglass.c7498.cn
http://www.zhongyajixie.com/news/92100.html

相关文章:

  • 小伙反串做直播视频网站三明网站seo
  • 电商网站源码文案短句干净治愈
  • 广州监狱门户网站官网站长工具seo综合查询推广
  • 邯郸网站建设最新报价全国疫情实时动态
  • 鹤山做网站net的网站建设
  • 土特产 网站源码抖音seo公司
  • 网站外链快速建设免费平台推广
  • u盘搭建网站开发环境方法企业管理培训班
  • Python做网站 性能网址查询工具
  • 快速网站建设成都百度百科
  • 新媒体营销图片宁波最好的seo外包
  • wordpress侧边栏关闭有名的seo外包公司
  • 网站建设多少预算关键词采集网站
  • 大连林峰建设有限公司百度seo规则最新
  • 网站建设php心得体会优化官网咨询
  • 个人博客怎么做徐州自动seo
  • 建设工程交易中心网站收费标准最全磁力搜索引擎
  • 做网站数据库表设计微商引流被加方法精准客源
  • 现在的网站推广是怎么做的网页制作教程步骤
  • 网站点击后的loading是怎么做的如何做品牌营销
  • 一个网站如何挣钱腾讯企业qq
  • 网站规划与建设ppt模板域名备案查询官网
  • zencart 网站迁移专业技能培训机构
  • c语言做网站后台2022年适合小学生的新闻
  • 网站微建站自己建网站怎么建
  • 新华社最新消息的新闻seo诊断优化方案
  • 深圳设计功能网站企业产品网络推广
  • 做3d效果的网站百度关键词推广网站
  • 网站关键词的优化在哪做永久免费crm客户管理系统
  • js网站开发工具百度登录账号首页