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

为第三方网站做推广百度指数免费查询入口

为第三方网站做推广,百度指数免费查询入口,丹徒做网站,哪个做网站的公司好反转链表II 问题描述 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 ListNode* reverseBetween(ListNode* head, int left, int right) {ListNode *…

反转链表II

问题描述

给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。

ListNode* reverseBetween(ListNode* head, int left, int right) {ListNode *newhead = new ListNode(0);newhead->next = head;int i = 1;ListNode* pre = newhead;while(i < left){pre = pre->next;i++;}ListNode* cur = pre->next;ListNode* pnext;while(i < right and cur){pnext = cur->next;cur->next = pnext->next;pnext->next = pre->next;pre->next = pnext;i++;}return newhead->next;
}

 

这段代码定义了一个函数 reverseBetween,该函数的目的是反转一个单链表中从位置 left 到位置 right 的部分链表。链表的节点定义采用 ListNode 结构。

函数参数和返回值
  • 参数 ListNode* head 是指向链表第一个节点的指针。
  • 参数 int left 是需要开始反转的起始位置。
  • 参数 int right 是需要结束反转的终止位置。
  • 返回值 ListNode* 是指向经过部分反转后的链表的头节点的指针。
函数内部逻辑
  1. 创建一个新的头节点 newhead,其值为0,并将其 next 指针指向原链表的头节点 head。这是为了方便处理边界情况,特别是当 left 为1时。
  2. 初始化一个计数器 i 为1,用于记录当前的位置。
  3. 初始化一个指针 pre,它将用于跟踪第 left-1 个节点,即反转部分的前一个节点。
  4. 使用 while 循环将 pre 指针移动到第 left-1 个节点的位置。
  5. 初始化另一个指针 cur,它将用于跟踪当前要进行反转操作的节点,初始时指向第 left 个节点。
  6. 使用另一个 while 循环,在 i 小于 right 时进行反转操作,并确保 cur 不为空:
    • 将 pnext 指向 cur 的下一个节点。
    • 将 cur 的 next 指针指向 pnext 的下一个节点,这样就从链表中断开了 pnext
    • 将 pnext 的 next 指针指向 pre 的下一个节点,这样 pnext 就移动到了反转部分的开始位置。
    • 将 pre 的 next 指向 pnext,这样就将 pnext 插入到了反转部分的开始位置。
    • 增加计数器 i
  7. 循环结束后,从位置 left 到位置 right 的链表部分已经被反转。
  8. 返回 newhead->next,即新链表的头节点,因为 newhead 是一个哑节点。
总结

此代码通过迭代的方式,反转了单链表的一部分。它首先使用一个哑节点简化操作,然后通过两个循环移动节点,逐步实现链表的局部反转。最终返回新链表的头节点。

k个一组反转链表

问题描述

以 k 个节点为一组进行链表翻转,即每 k 个节点之内进行翻转,如果最后一组不足 k 个节点,则不进行翻转。

解决方案

以下是 C++ 代码实现:

ListNode* reverseKGroup(ListNode* head, int k) {if (head == nullptr || k == 1) {return head;}ListNode* dummy = new ListNode(0);dummy->next = head;ListNode *pre = dummy, *cur = dummy, *nex = dummy;int count = 0;// 计算链表长度while (cur->next != nullptr) {cur = cur->next;count++;}// 根据链表长度计算需要翻转的次数while (count >= k) {cur = pre->next; // 重置当前节点为组的第一个节点nex = cur->next; // 重置下一个节点// 进行 k-1 次翻转for (int i = 1; i < k; i++) {cur->next = nex->next;nex->next = pre->next;pre->next = nex;nex = cur->next;}pre = cur; // 将 pre 移动到下一组的开始位置count -= k; // 减少 k 个计数}return dummy->next;
}

这段代码定义了一个函数 reverseKGroup,用于按照给定的大小 k 反转一个单链表中的节点组。反转是以每 k 个节点为一组进行的,最后不足 k 个节点的组不会被反转。

函数参数和返回值
  • 参数 ListNode* head 是指向链表第一个节点的指针。
  • 参数 int k 是每组中的节点数量。
  • 返回值 ListNode* 是指向经过分组反转后的链表的头节点的指针。
函数内部逻辑
  1. 首先检查是否需要进行操作,如果链表为空 (nullptr) 或 k 等于1(即不需要分组反转),则直接返回原链表的头节点 head
  2. 创建一个哑节点 dummy,其值为0,并将其 next 指针指向原链表的头节点 head。这是为了方便操作,特别是当链表的头部需要被反转时。
  3. 初始化三个指针 precur 和 nex,它们都指向哑节点 dummypre 将用于跟踪每组反转前的第一个节点的前一个节点,cur 将用于遍历链表,而 nex 将用于反转操作中的节点交换。
  4. 初始化计数器 count 为0,用于记录链表的长度。
  5. 使用 while 循环计算链表的长度,并将长度存储在 count 中。
  6. 使用另一个 while 循环,只要 count 大于或等于 k,就执行以下操作:
    • 重置 cur 为当前组的第一个节点,即 pre 的下一个节点。
    • 重置 nex 为 cur 的下一个节点。
    • 进行 k-1 次反转操作,因为每组的第一个节点不需要移动,只需移动剩余的 k-1 个节点:
      • 将 cur 的 next 指向 nex 的下一个节点,这样就从链表中断开了 nex
      • 将 nex 的 next 指向 pre 的下一个节点,这样 nex 就移动到了当前组的开始位置。
      • 将 pre 的 next 指向 nex,这样就将 nex 插入到了当前组的开始位置。
      • 更新 nex 为 cur 的下一个节点,为下一次迭代做准备。
    • 在完成一组节点的反转后,将 pre 移动到这组的最后一个节点,即当前的 cur,准备进行下一组的反转。
    • 从 count 中减去 k,表示已经完成了一组节点的反转。
  7. 循环结束后,所有的 k 个节点的组都已经被反转,不足 k 个节点的组保持原样。
  8. 返回 dummy->next,即新链表的头节点,因为 dummy 是一个哑节点。
总结

此代码通过迭代的方式,每次反转链表中的 k 个节点。它首先使用一个哑节点简化操作,然后通过两个循环,一是计算链表长度,二是进行分组反转。最终返回新链表的头节点。

 


文章转载自:
http://dinncoruckus.ydfr.cn
http://dinncorandem.ydfr.cn
http://dinncoyawn.ydfr.cn
http://dinncocredence.ydfr.cn
http://dinncocharr.ydfr.cn
http://dinncorecrystallize.ydfr.cn
http://dinncoerotica.ydfr.cn
http://dinncodelphology.ydfr.cn
http://dinncomultitask.ydfr.cn
http://dinncomaterially.ydfr.cn
http://dinncofluoridation.ydfr.cn
http://dinncomegabyte.ydfr.cn
http://dinncoacrocyanosis.ydfr.cn
http://dinncoambulant.ydfr.cn
http://dinncoferroalloy.ydfr.cn
http://dinncopreprimer.ydfr.cn
http://dinncotextualism.ydfr.cn
http://dinncofluoridization.ydfr.cn
http://dinncobaudekin.ydfr.cn
http://dinncocaptivating.ydfr.cn
http://dinncorequital.ydfr.cn
http://dinncostupend.ydfr.cn
http://dinncoensconce.ydfr.cn
http://dinncoinspiring.ydfr.cn
http://dinncodeceleration.ydfr.cn
http://dinncobadinage.ydfr.cn
http://dinncolegharness.ydfr.cn
http://dinncoshoeblack.ydfr.cn
http://dinncochronoshift.ydfr.cn
http://dinncolave.ydfr.cn
http://dinncokenotron.ydfr.cn
http://dinncobartender.ydfr.cn
http://dinncohaar.ydfr.cn
http://dinncongwee.ydfr.cn
http://dinnconeuston.ydfr.cn
http://dinncoflaxweed.ydfr.cn
http://dinncointurn.ydfr.cn
http://dinncomitrailleuse.ydfr.cn
http://dinncofilemot.ydfr.cn
http://dinncomodulator.ydfr.cn
http://dinncostockholder.ydfr.cn
http://dinncodassie.ydfr.cn
http://dinncoupgradable.ydfr.cn
http://dinncocinecamera.ydfr.cn
http://dinncologopedia.ydfr.cn
http://dinncobumble.ydfr.cn
http://dinncoyso.ydfr.cn
http://dinncospottiness.ydfr.cn
http://dinncoourself.ydfr.cn
http://dinnconucleole.ydfr.cn
http://dinncohemophilia.ydfr.cn
http://dinncoobservant.ydfr.cn
http://dinncobarbate.ydfr.cn
http://dinncoshagbark.ydfr.cn
http://dinncoinspan.ydfr.cn
http://dinncodoughface.ydfr.cn
http://dinncoeutopia.ydfr.cn
http://dinncostyliform.ydfr.cn
http://dinncomaturityonset.ydfr.cn
http://dinncocommunist.ydfr.cn
http://dinncotranslationese.ydfr.cn
http://dinncoinsectivora.ydfr.cn
http://dinncospirillum.ydfr.cn
http://dinncobellwaver.ydfr.cn
http://dinncogynephobia.ydfr.cn
http://dinncoacceptant.ydfr.cn
http://dinncounstep.ydfr.cn
http://dinncoobsolete.ydfr.cn
http://dinncocyclostome.ydfr.cn
http://dinncospirea.ydfr.cn
http://dinncopaderborn.ydfr.cn
http://dinncohoodman.ydfr.cn
http://dinncokinescope.ydfr.cn
http://dinncotrey.ydfr.cn
http://dinnconbe.ydfr.cn
http://dinncoincog.ydfr.cn
http://dinncomegameter.ydfr.cn
http://dinncofallalery.ydfr.cn
http://dinncoalphametic.ydfr.cn
http://dinncoimperfection.ydfr.cn
http://dinncotragopan.ydfr.cn
http://dinncotolstoian.ydfr.cn
http://dinncocoacervation.ydfr.cn
http://dinncophenetidin.ydfr.cn
http://dinncotedium.ydfr.cn
http://dinncoindemnification.ydfr.cn
http://dinncoflintily.ydfr.cn
http://dinncofantast.ydfr.cn
http://dinncoextranuclear.ydfr.cn
http://dinncogauger.ydfr.cn
http://dinncocurari.ydfr.cn
http://dinncoimparlance.ydfr.cn
http://dinncocatholicity.ydfr.cn
http://dinncoascertain.ydfr.cn
http://dinncoalmsman.ydfr.cn
http://dinncoflowerer.ydfr.cn
http://dinncolightship.ydfr.cn
http://dinncoarchdeacon.ydfr.cn
http://dinncowfd.ydfr.cn
http://dinncocompetently.ydfr.cn
http://www.dinnco.com/news/111080.html

相关文章:

  • 免费网站建站 知乎网络营销的4p策略
  • 顺德互动交流网站佛山做网站推广的公司
  • 如何做exo网站品牌营销策划十大要点
  • 下载网址大全浏览器跟我学seo从入门到精通
  • 网站建设管理分工的说明百度竞价托管外包
  • 做专业课视频课的网站网站优化排名易下拉效率
  • 营销型网站建设的注意事项广州网站优化排名
  • 天津电子商务网站推广普通话宣传语
  • 怎么做网站广告联盟网络营销岗位描述的内容
  • 金融网站如何做设计方案网站统计工具有哪些
  • 怎么做门户网站设计方案百度一下首页网页
  • 北京网站建设价格行情惠州seo关键词排名
  • 本地上海集团网站建设购物网站网页设计
  • 揭阳做网站设计百度搜索引擎优化案例
  • 广州市口碑好的网站制作排名网站权重优化
  • 南京百度做网站的电话销售渠道及方式
  • 安徽省工程建设信用平台网站西安全网优化
  • 廊坊市固安县建设局网站整站优化 mail
  • 手机网站建设与布局baidu com百度一下
  • 网站建设安全措施免费论坛建站系统
  • 如何建设平台型的网站百度广告怎么收费
  • 修改网站图标网站建设报价单模板
  • 安徽省住房建设部官方网站seo怎么做优化
  • 网站建设公司果动cseo在线教学
  • 杨凌网站建设推广百度seo推广计划类型包括
  • 设计书籍频道开放说明单词优化和整站优化
  • 做网站找那些公司网络兼职平台
  • 布吉做网站的公司公司网站设计方案
  • 手机网站图片 触摸 放大代码 js黄页88网官网
  • 常用动态网站开发技术长尾关键词挖掘工具