【递归】 92. 反转链表 II

92. 反转链表 II

解题思路

  • 定义了单链表节点的数据结构,包含整数值 val 和指向下一个节点的引用 next。

  • 在 Solution 类中,定义了一个类变量 successor,用于保存当前节点的后继节点。

  • 实现了 reverseBetween 方法,该方法通过递归实现反转链表中指定范围 [left, right] 的节点。如果 left 等于 1,表示从链表头部开始反转,调用 reverseN 方法。

  • reverseN 方法用于翻转链表开头的 n 个元素。递归的终止条件是 n 等于 1,此时保存当前节点的后继节点,并返回当前节点。在递归过程中,将链表中的相邻节点反转,确保正确的连接关系。

  • 在 reverseN 方法中,通过递归调用获得新的头节点 last,然后调整相邻节点的指向关系,将当前节点 head 的 next 指针指向 successor,完成反转。

  • 返回反转后的链表的新头节点 last。

  • 总体思路是通过递归实现链表反转,其中 reverseBetween 方法用于处理整个范围的反转,而 reverseN 方法用于处理范围内开头的 n 个元素的反转。通过递归调用和相邻节点的指向关系调整,实现了链表的指定范围反转。

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {ListNode successor = null;// 后驱节点public ListNode reverseBetween(ListNode head, int left, int right) {if(left == 1){return reverseN(head,right);}head.next = reverseBetween(head.next,left - 1,right - 1);return head;}// 翻转链表开头的n个元素ListNode reverseN(ListNode head,int n){if(n == 1){successor = head.next;// 保存第 n + 1个节点return head;}ListNode last = reverseN(head.next,n - 1);// 返回新的头节点head.next.next = head;// head作为新的尾节点head.next = successor;return last;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/667427.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp 高德地图显示

1. uniapp 高德地图显示 使用前需到**高德开放平台(https://lbs.amap.com/)**创建应用并申请Key   登录 高德开放平台,进入“控制台”,如果没有注册账号请先根据页面提示注册账号   打开 “应用管理” -> “我的应用”页面…

vue 渲染多列表格,拖动加载

vue在使用el-table渲染多列&#xff08;几千列&#xff09;表格时&#xff0c;页面会十分卡顿&#xff0c;使用html原生表格拖动滚动条加载列&#xff0c;可以解决这个问题 后端接口返回的数据格式如下&#xff1a; line_data中的数据title对应index_title里的内容 <temp…

diffusers代码梳理总结

常用类 这里总结一些频繁用到的支持类。 from dataclasses import dataclass from ..utils import BaseOutput from collections import OrderedDictclass BaseOutput(OrderedDict):...dataclass class Unet2DOutput(BaseOutput):"""The output of [Unet2DMod…

Linux---yum命令详解

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 目录 1.概念2.yum的配置信…

【开源】WordPress一键崩溃宕机插件(整活娱乐)

插件介绍 可一键实现Wordpress崩溃宕机的整活向插件&#xff08;请勿用于非法途径&#xff0c;仅供整活娱乐&#xff09;。鼓励关注网站性能的提升&#xff0c;以提供更好的用户体验&#xff0c;提倡为用户提供良好体验和高效速度的原则。 介绍 长期以来&#xff0c;人们都在…

【webrtc】跟webrtc学list遍历

m98 代码:RTT G:\CDN\rtcCli\m98\src\video\call_stats.cc遍历list 进行删除 :remove_if void RemoveOldReports(int64_t now, std::list<CallStats::RttTime>* reports) {static constexpr const <

算法训练|乘积最大数组、最长有效括号

152. 乘积最大子数组 - 力扣&#xff08;LeetCode&#xff09; 总结&#xff1a;解题思路是需要维护一个最大值以及一个最小值&#xff0c;因为最小值如果是负数的话乘上接下来的一个负数会有可能成为最大的数 代码&#xff1a; class Solution { public:int maxProduct(vec…

【Vue】3-1、Vue 3 简介

一、Vue 3 的优势 Vue 2 Options API 的缺陷&#xff1a; 一个功能往往需要在不同的 vue 配置项中定义属性和方法&#xff0c;比较分散&#xff0c;需求简单还好&#xff0c;清晰明了&#xff1b;但是需求复杂之后&#xff0c;就会多出 watch&#xff0c;computed&#xff0c;i…

两次NAT

两次NAT即Twice NAT&#xff0c;指源IP和目的IP同时转换&#xff0c;该技术应用于内部网络主机地址与外部网络上主机地址重叠的情况。 如图所示&#xff0c;两次NAT转换的过程如下: 内网Host A要访问地址重叠的外部网络Host B&#xff0c;Host A向位于外部网络的DNS服务器发送…

Android11+ 如何获得外部存储权限

现如今Android版本读取外部目录已经三分天下&#xff1a; Android6.0以下Android6.0-Android11Android11以上 一、在Android6.0以下的版本中&#xff0c;读取外部目录可直接读取new File(Environment.getExternalStorageDirectory().getAbsolutePath()) 二、在Android6.0-An…

力扣面试150 只出现一次的数字Ⅱ 哈希 统计数位 DFA有穷自动机

Problem: 137. 只出现一次的数字 II 文章目录 思路&#x1f496; 哈希&#x1f496; 位数统计&#x1f496; DFA 状态机 思路 &#x1f468;‍&#x1f3eb; 参考 &#x1f496; 哈希 ⏰ 时间复杂度: O ( n ) O(n) O(n) &#x1f30e; 空间复杂度: O ( n ) O(n) O(n) cl…

【EVP】Explicit Visual Prompting for Low-Level Structure Segmentations

目录 &#x1f347;&#x1f347;0.简介 &#x1f337;&#x1f337;1.研究动机 &#x1f34b;&#x1f34b;2.主要贡献 &#x1f353;&#x1f353;3.网络结构 &#x1f36d;3.1整体结构 &#x1f36d;3.2高频分量计算 &#x1f36d;3.3显示视觉提示EVP &#x1f342;&…

【Java八股文面试系列】JVM-内存区域

目录 Java内存区域 运行时数据区域 线程独享区域 程序计数器 Java 虚拟机栈 StackFlowError&OOM 本地方法栈 线程共享区域 堆 GCR-分代回收算法 字符串常量池 方法区 运行时常量池 HotSpot 虚拟机对象探秘 对象的创建 对象的内存布局 句柄 Java内存区域 运…

2024年美赛数学建模F题思路分析 - 减少非法野生动物贸易

# 1 赛题 问题F&#xff1a;减少非法野生动物贸易 非法的野生动物贸易会对我们的环境产生负面影响&#xff0c;并威胁到全球的生物多样性。据估计&#xff0c;它每年涉及高达265亿美元&#xff0c;被认为是全球第四大非法交易。[1]你将开发一个由数据驱动的5年项目&#xff0c…

git命令远程仓库推送本地项目报错了,解决方案

如果你在使用git命令上传本地项目到远程仓库遇到了如下错误&#xff1a; Updates were rejected because the tip of your current branch is behind。n 别慌&#xff0c;肯定是你的远程仓库里面有原始文件&#xff0c;需要你提前进行一下合并操作&#xff0c;然后才能使用pu…

flash芯片最新详解

Flash芯片是一种非易失性存储器&#xff08;Non-Volatile Memory, NVM&#xff09;&#xff0c;也就是说&#xff0c;即使在断电后&#xff0c;存储在其中的数据也不会丢失。其工作原理基于电荷俘获效应&#xff0c;通过控制电压使存储单元的浮动栅极上捕获或释放电荷来实现数据…

[AHOI2008] 紧急集合 / 聚会

[AHOI2008] 紧急集合 / 聚会 题目描述 欢乐岛上有个非常好玩的游戏&#xff0c;叫做“紧急集合”。在岛上分散有 n n n 个等待点&#xff0c;有 n − 1 n-1 n−1 条道路连接着它们&#xff0c;每一条道路都连接某两个等待点&#xff0c;且通过这些道路可以走遍所有的等待点…

离线数仓-数据治理

目录 一、前言 1.1 数据治理概念 1.2 数据治理目标 1.3 数据治理要解决的问题 1.3.1 合规性 元数据合规性 数据质量合规性 数据安全合规性 1.3.2 成本 存储资源成本 计算资源成本 二、数据仓库发展阶段 2.1 初始期 2.2 扩张期 2.3 缓慢发展期 2.4 变革期 三、…

华为机考入门python3--(5)牛客5-进制转换

分类&#xff1a;数字 知识点&#xff1a; 十六进制转int num int(hex_num, 16) int转十六进制 hex_num hex(num) 题目来自【牛客】 hex_num input().strip() dec_num int(hex_num, 16) print(dec_num) by 软件工程小施同学