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

力扣92.反转链表Ⅱ

题目描述

题目链接92. 反转链表 II

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

示例 1:

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

示例 2:

输入:head = [5], left = 1, right = 1
输出:[5]

提示:

  • 链表中节点数目为 n
  • 1 <= n <= 500
  • -500 <= Node.val <= 500
  • 1 <= left <= right <= n

进阶: 你可以使用一趟扫描完成反转吗?

思路解析

        从第left个节点开始反转,记录第left个节点(start)和前一个节点(L),反转完链表后,将反转完成的链表放回原链表中,将L节点指向最后一个反转的节点,将start节点指向最后一个反转的节点的下一个节点即可。

代码实现

class Solution {
public:ListNode* reverseBetween(ListNode* head, int left, int right) {ListNode*h=new ListNode();//虚头节点h->next = head;ListNode*start,*b=h,*L;//start记录开始反转的节点,b用来遍历链表,L记录start的前一个节点for(int i=0;i<left;i++){L = b;b = b->next;start = b;}ListNode*a = L,*c;//反转链表中left到right节点for(int i = left;i <= right;i++){c = b->next;b->next = a;a = b;b = c;}L->next = a;//将反转完成的链表接入原链表中start->next = b;return h->next;}
};

http://www.lryc.cn/news/497812.html

相关文章:

  • Java设计模式之适配器模式:深入JDK源码探秘Set类
  • java八股-流量封控系统
  • 【WebRTC】Android SDK使用教学
  • 基于单片机的智能晾衣控制系统的设计与实现
  • 多人聊天室 NIO模型实现
  • 三、使用 Maven:命令行环境
  • Blender导入下载好的fbx模型像的骨骼像针戳/像刺猬
  • 如何高效搭建智能BI数据分析系统
  • 第 6 章 Java 并发包中锁原理剖析Part one
  • 使用 Canvas 绘制一个镂空的圆形区域
  • 【Notepad++】---设置背景为护眼色(豆沙绿)最新最详细
  • 2024 数学建模国一经验分享
  • 安全见闻2
  • Web游戏开发指南:在 Phaser.js 中读取和管理游戏手柄输入
  • 代码随想录32 动态规划理论基础,509. 斐波那契数,70. 爬楼梯,746. 使用最小花费爬楼梯。
  • 记录一个Flutter 3.24单元测试点击事件bug
  • 使用Python将 word文档转pdf文档
  • 基于C#+SQLite开发数据库应用的示例
  • Vue基本语法
  • 芯片发展史
  • 我的知识图谱和Neo4j数据库的使用
  • ASP.NET CORE API 解决跨域问题
  • sram测试注意讨论
  • Mybatis 支持延迟加载的详细内容
  • word文档使用技巧笔记
  • 使用docker-compose部署搜索引擎ElasticSearch6.8.10
  • bugku-web-login2
  • 【 AI技术赋能有限元分析与材料科学应用实践】Neo-Hookean 材料与深度学习结合的有限元分析
  • StarRocks关于ConcurrentModificationException 问题的解决
  • 网络安全防护指南:筑牢网络安全防线(5/10)