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

大连推广网站搭建哪家好丹阳网站建设案例

大连推广网站搭建哪家好,丹阳网站建设案例,手机兼职赚钱一单一结微信群,北京代理注册记账公司系列专栏 《分治》 《模拟》 《Linux》 目录 1、题目链接 2、题目介绍 3、解法 (双指针) 4、代码 是 206. 反转链表 - 力扣(LeetCode)的类型题,且难度提升,可以先完成206,然后参照206的…

 系列专栏

《分治》

《模拟》

《Linux》


目录

1、题目链接 

2、题目介绍

3、解法 (双指针)

4、代码


是 206. 反转链表 - 力扣(LeetCode)的类型题,且难度提升,可以先完成206,然后参照206的思路,解决本题。

1、题目链接 

 92. 反转链表 II - 力扣(LeetCode)

2、题目介绍

3、解法 (双指针)

  1. 创建虚拟节点
    • 为了简化边界情况的处理,尤其是当left为1时,即需要翻转的链表部分从头节点开始,此时我们难以直接操作头节点。因此,我们创建一个虚拟节点dummy,其next指向原链表的头节点head。这样,我们总可以操作dummy->next而无需担心修改原始头节点。
  2. 定位left位置的前一个节点
    • 我们需要遍历链表直到left-1的位置,以便找到left位置节点的前一个节点。这个节点在后续翻转过程中将作为新链表的尾部节点(因为它后面接的是需要翻转的部分),并且在翻转完成后,它将指向翻转后部分的新头节点。
    • 变量cur用于遍历链表,直到它指向left位置的前一个节点。
    • 终止位置是left-1。
  3. 准备翻转
    • pre指向left位置的节点,这是翻转部分的起始节点。
    • lLEFT存储left位置前一个节点的引用,这样在翻转后,我们可以将其与翻转后的链表部分重新链接。
  4. 执行翻转
    • 我们需要翻转从leftright的节点。
    • 使用三个指针pre(当前节点的前一个节点),pre->next(当前节点),和tmp(当前节点的下一个节点)。
    • 翻转操作通过改变节点间的next指针来实现:将当前节点的next指向它的前一个节点pre,然后移动precur指针到下一个节点。
    • 循环继续直到cur到达right位置的节点。此时,pre指向right位置的下一个节点,而cur指向right位置的节点。
  5. 重新链接
    • 翻转完成后,我们需要将翻转后的部分与链表的其他部分重新链接。
    • lLEFT->next->next指向right位置之后的节点(即pre),这是因为lLEFT->next现在是翻转部分的新头节点(原right位置的节点),而我们需要将它的next指向翻转部分之后的节点。
    • lLEFT->next指向翻转部分的新头节点(即原right位置的节点,现在的cur)。
  6. 返回结果
    • 虚拟节点dummynext指向原始链表的头节点或翻转后的新头节点(如果翻转从头部开始)。因此,返回dummy->next即可得到最终翻转后的链表。

4、代码

/*** 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:ListNode* reverseBetween(ListNode* head, int left, int right) {ListNode* dummy = new ListNode(0);//虚拟结点dummy->next = head;ListNode* cur= dummy;//找到left位置的前一个结点for (int i = 0; i < left - 1; i++){cur = cur->next;}ListNode* pre = cur->next;ListNode* lLEFT= cur;//用来存储left位置的前一个结点//翻转区域//保存头尾结点,方便之后和其他区域链接for (int i = left - 1; i < right; i++){ListNode* tmp = pre->next;pre->next = cur;cur = pre;//cur最后会是right对应的结点pre = tmp;//PRE最后会是right的下一个结点}//链接翻转区域lLEFT->next->next = pre;lLEFT->next = cur;return dummy->next;}
};

💗感谢阅读!💗


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

相关文章:

  • 宁波免费建站外包公司网页设计实训总结800字
  • 百度官方网站怎么做邹平 建设项目 网站公示
  • 网站维护一般多久做网站注意哪些方面
  • 无锡网站制作的公司wordpress 取一类文章
  • 网站域名信息查询无锡 网站制作 大公司
  • 网站建设创客免费素材网站素材库
  • 网站建设与制作教学计划建设网站收费
  • 为学校网站做网站推广策划宝安沙井网站建设
  • 上海房产做哪个网站好it培训教育机构
  • 关键词能报价的网站网站开发主管
  • 大兴网站建设费用哪里有做网站的单位
  • 陕西住建厅网站官网wordpress自带图片大小
  • 做面食网站无锡本地网站
  • thinkphp做网站教程华为外包一般能干多久
  • 哪些网站是做外贸生意的河西做网站公司
  • 成都网站制作软件律师如何做网络推广
  • 邢台移动网站设计南京网站建设
  • 网站开发工程师绩效考核百度公司可以做网站么
  • 网站如何实现微信登录界面兰州哪家网站做推广效果好
  • 企业网站推广优化公司国际新闻今天
  • 服务好的扬中网站优化专做美妆的视频网站
  • 软件下载平台中国网站优化
  • 盐城市建设银行网站centos7使用wordpress
  • 海口网站制作推广注册安全工程师职业资格制度规定
  • 北京免费模板建站广西桂林旅游必去十大景点
  • 网站建设的理由wordpress到day one
  • 做淘宝优惠券网站要多少钱大学生实训网站建设心得
  • 网站制作湖州云南网站建设选天软
  • 安徽省住房和城乡建设厅网站首页网站建设走什么科目
  • 大名专业做网站扩展名 网站