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

【算法通关】递归:汉诺塔、合并链表、反转链表、两两交换、快速幂全解

文章目录1. 汉诺塔问题2. 合并两个有序链表3. 反转链表4. 两两交换链表中的节点5. 快速幂1. 汉诺塔问题题目链接汉诺塔问题题目描述题解思路递归将 n 个盘子从 A 柱移到 C 柱以 A 为起点、C 为目标、B 为辅助拆分为三个步骤其中包含两个结构完全相同的子问题子问题一将上面 n-1 个盘子从 A 柱移到 B 柱以 A 为起点、B 为目标、C 为辅助独立操作将最底层唯一的最大盘子从 A 柱直接移到 C 柱子问题二将n-1 个盘子从 B 柱移到 C 柱以 B 为起点、C 为目标、A 为辅助两个子问题与原问题的解题逻辑完全一致仅盘子数量、柱子角色不同符合递归的拆分要求。每一层递归只处理固定数量的盘子移动执行完整的三步流程先递归调用自身完成上层 n-1 个盘子的转移为最大盘子腾出移动空间执行唯一的直接移动操作将当前最底层的最大盘子移到目标柱再次递归调用自身将之前转移走的 n-1 个盘子从辅助柱移到目标柱叠在最大盘子之上递归过程自顶向下拆分问题自底向上逐步完成移动最终合并为完整解。当盘子数量 n 1 时无需再拆分直接将这一个盘子从起始柱移到目标柱即可。示例代码classSolution{publicvoidhanota(ListIntegerA,ListIntegerB,ListIntegerC){movePlant(A,B,C,A.size());}publicvoidmovePlant(ListIntegerstart,ListIntegertemp,ListIntegertarget,intsize){if(size1){target.add(start.remove(start.size()-1));return;}// a 借助 c 将n-1个盘子放到bmovePlant(start,target,temp,size-1);// a 剩下的一个盘子 放到ctarget.add(start.remove(start.size()-1));// b 借助a 将 n-1 个盘子放到cmovePlant(temp,start,target,size-1);}}2. 合并两个有序链表题目链接21. 合并两个有序链表题目描述题解思路递归递归函数接收两个有序链表的头节点将它们合并为一个新的有序链表并返回合并后链表的头节点。函数体逻辑比较两个链表当前头节点的值选择值较小的节点作为合并后链表的头节点然后将该节点的next指针指向「剩余两个链表」递归合并后的结果。递归出口当其中一个链表为空时直接返回另一个非空链表空链表也会被正确处理。示例代码classSolution{publicListNodemergeTwoLists(ListNodelist1,ListNodelist2){if(list1null)returnlist2;if(list2null)returnlist1;if(list1.vallist2.val){list1.nextmergeTwoLists(list1.next,list2);returnlist1;}else{list2.nextmergeTwoLists(list2.next,list1);returnlist2;}}}3. 反转链表题目链接206. 反转链表题目描述题解思路递归递归函数接收一个链表的头指针完成链表逆序操作并返回逆序后链表的头节点。函数体逻辑先递归处理「当前节点之后的子链表」并完成逆序再将当前节点添加到已逆序的子链表末尾。递归出口当当前节点为空或当前链表仅含一个节点时无需逆序直接返回当前节点。示例代码classSolution{publicListNodereverseList(ListNodehead){if(headnull||head.nextnull)returnhead;ListNodenewNodereverseList(head.next);head.next.nexthead;head.nextnull;returnnewNode;}}4. 两两交换链表中的节点题目链接24. 两两交换链表中的节点题目描述题解思路递归递归函数接收一个链表完成链表节点的两两交换并返回交换后链表的头节点。函数体逻辑先递归处理「第二个节点之后的子链表」再将当前的两个节点进行交换最后将交换后的当前节点组与已处理好的后续子链表连接。递归出口当当前节点为空或当前链表仅含一个节点时无需交换直接返回当前节点。示例代码classSolution{publicListNodeswapPairs(ListNodehead){if(headnull||head.nextnull)returnhead;ListNodenewNodeswapPairs(head.next.next);ListNodetemphead.next;temp.nexthead;head.nextnewNode;returntemp;}}5. 快速幂题目链接50. Pow(x,n)题目描述题解思路快速幂这道题递归的核心是不直接算 xⁿ而是把它拆成规模更小、解法完全相同的子问题递归解决后再合并答案。就是求 x 的 n 次方 求 x 的 n/2 次方 × 自己再根据奇偶决定是否多乘一个 xn是奇数则多乘一个 x负数处理x 的负 n 次方 1 / (x 的正 n 次方)先把负指数变成正指数仍然用上面完全相同的递归逻辑计算最后取倒数即可。示例代码classSolution{publicdoublemyPow(doublex,intn){returnn0?1.0/pow(x,-n):pow(x,n);}publicdoublepow(doublex,intn){if(n0)return1.0;doubletmppow(x,n/2);returnn%20?tmp*tmp:tmp*tmp*x;}}

相关文章:

【算法通关】递归:汉诺塔、合并链表、反转链表、两两交换、快速幂全解

文章目录1. 汉诺塔问题2. 合并两个有序链表3. 反转链表4. 两两交换链表中的节点5. 快速幂1. 汉诺塔问题 题目链接:汉诺塔问题 题目描述: 题解思路:递归 将 n 个盘子从 A 柱移到 C 柱(以 A 为起点、C 为目标、B 为辅助&#xff…...

右键菜单太乱?ContextMenuManager让Windows操作效率提升300%

右键菜单太乱?ContextMenuManager让Windows操作效率提升300% 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager ContextMenuManager是一款纯粹的Windows…...

SurfaceFlinger渲染管线的三种负载状态

//frameworks/native/services/surfaceflinger/Scheduler/VsyncModulator.h enum class VsyncConfigType {Early, EarlyGpu, Late };SurfaceFlinger 内部有一个叫做 VSyncModulator(VSYNC 调制器)的组件,它就像一个自动挡变速箱。它会实时监控当前屏幕上发生的事情,并在 Ea…...

7.企业级开发

一.软件开发的流程二.系统开发环境三.分支设计规范Git Flow模型四.企业级项目管理https://gitee.com/enterprises1.创建项目2.创建项目对应的仓库3.添加成员还可以进行(项目/仓库)成员管理五.开发实战场景1.创建仓库时,一般选生产和开发模型,其他的分支自己创建2.创建新分支:3.…...

探索双闭环直流调速系统的仿真之旅:从疑惑到理解

simulink双闭环直流调速系统matlab仿真在学习直流调速系统的过程中,双闭环控制总让我感到有些困惑。PID控制器的参数如何选择?电流环和速度环之间到底有什么联系?带着这些问题,我决定通过Simulink仿真来寻找答案。 一、搭建仿真模…...

LFM2.5-1.2B-Thinking-GGUF一文详解:Thinking模式与传统Decoder-only模型的本质差异

LFM2.5-1.2B-Thinking-GGUF一文详解:Thinking模式与传统Decoder-only模型的本质差异 1. 模型概述 LFM2.5-1.2B-Thinking-GGUF是Liquid AI推出的轻量级文本生成模型,专为低资源环境优化设计。该模型采用创新的Thinking模式架构,与传统Decode…...

23种设计模式 - 建造者模式(Builder)

建造者模式(Builder)—— 一步一步拼出来 大白话解释 你去点外卖套餐,可以自己一步步选: 选主食(汉堡 / 鸡腿)选饮料(可乐 / 橙汁)选大小(中杯 / 大杯)要不要…...

OpenClaw技能扩展指南:为nanobot添加自定义QQ机器人功能

OpenClaw技能扩展指南:为nanobot添加自定义QQ机器人功能 1. 为什么需要QQ机器人集成 去年夏天,我发现自己经常在深夜调试代码时,需要反复切换手机和电脑查看运行结果。这种低效的操作让我开始寻找一种更优雅的解决方案——通过聊天工具直接…...

门户网站被入侵了怎么办?从紧急止损到重建免疫的完整作战手册

当监控警报响起,发现服务器存在异常进程、网站首页或核心栏目内容被恶意篡改、或数据库出现不明查询时,一个可怕的现实摆在眼前:您的门户网站已经被入侵了。门户网站作为企业或机构的官方形象窗口,一旦被入侵,不仅直接…...

无需高配电脑!VMware虚拟机运行Qwen3-TTS声音克隆实测教程

无需高配电脑!VMware虚拟机运行Qwen3-TTS声音克隆实测教程 1. 为什么选择虚拟机部署声音克隆? 很多开发者对语音克隆技术感兴趣,但往往被硬件要求劝退。传统认知中,运行1.7B参数量的AI模型需要高端显卡和复杂的环境配置。实际上…...

锂离子电池热失控模型:1方程参数辨识与MATLAB实践

锂离子电池热失控模型:1方程参数辨识 锂离子电池热失控仿真,详细描述了如何利用热失控ARC数据和MATLAB软件进行热失控模型参数辨识的方法步骤,及MATLAB代码解析,从下图可见,拟合的结果具有较高的准确度。 本案例提供基…...

Python从入门到精通(03章):变量、数据类型与类型转换

Python从入门到精通(第03章):变量、数据类型与类型转换 开头导语 这是本系列第03章。本文采用“知识点讲解 错误示例 正确写法 自测清单”的结构,目标是让你不仅能看懂,还能独立写出可运行代码。建议你边看边敲&…...

Python从入门到精通(05章):类与对象结构

Python从入门到精通(第05章):条件判断与分支结构 开头导语 这是本系列第05章。本文采用“知识点讲解 错误示例 正确写法 自测清单”的结构,目标是让你不仅能看懂,还能独立写出可运行代码。建议你边看边敲&#xff0…...

照着用就行:全学科适配的降AIGC工具 千笔·专业降AI率智能体 VS PaperRed 一站式解决降重难题

随着AI技术的迅猛发展,学术写作中对AI生成内容的识别能力也在不断提升,许多学生和研究者发现,原本依赖AI辅助撰写的论文,如今在查重系统中频频被标记出高AIGC率,甚至影响最终成绩。这种现象不仅让许多人措手不及&#…...

科研党收藏!9个降AIGC工具:全行业通用测评与推荐

在科研论文写作过程中,AI生成内容的痕迹往往成为查重率攀升的“隐形杀手”。如何在保持学术严谨性的同时有效降低AIGC率,已成为众多研究者亟需解决的问题。随着技术的发展,各类AI降重工具应运而生,它们不仅能够精准识别并去除AI痕…...

如何用猫抓Cat-Catch浏览器扩展轻松下载网页视频:5个超实用技巧

如何用猫抓Cat-Catch浏览器扩展轻松下载网页视频:5个超实用技巧 【免费下载链接】cat-catch 猫抓 chrome资源嗅探扩展 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 还在为无法下载在线视频而烦恼吗?🤔 你是否曾经在观…...

vLLM-v0.17.1GPU算力适配:华为昇腾CANN 7.0与vLLM对接可行性验证

vLLM-v0.17.1 GPU算力适配:华为昇腾CANN 7.0与vLLM对接可行性验证 1. vLLM框架简介 vLLM是一个专为大型语言模型(LLM)设计的高性能推理和服务库,由加州大学伯克利分校的天空计算实验室(Sky Computing Lab)最初开发,现已发展成为学术界和工业…...

采购管理系统:为企业实现降本增效、强化供应链韧性

在数字化浪潮下,采购管理已从传统的成本中心演变为企业的战略职能和价值引擎。选择一款合适的采购管理软件,对于企业实现降本增效、强化供应链韧性、赋能战略决策至关重要。本文将为您盘点市场上主流的五款采购管理软件,深入剖析其核心能力。…...

LobeChat效果对比:开源框架与官方ChatGPT的对话体验

LobeChat效果对比:开源框架与官方ChatGPT的对话体验 1. 引言:为什么需要对比开源与官方方案? 在AI聊天机器人领域,开发者常常面临一个关键选择:使用官方提供的ChatGPT服务,还是部署开源框架自行搭建&…...

高效解决图表数据提取难题:WebPlotDigitizer全功能解析

高效解决图表数据提取难题:WebPlotDigitizer全功能解析 【免费下载链接】WebPlotDigitizer WebPlotDigitizer: 一个基于 Web 的工具,用于从图形图像中提取数值数据,支持 XY、极地、三角图和地图。 项目地址: https://gitcode.com/gh_mirror…...

Llama-3.2V-11B-cot部署教程:双卡4090一键启动视觉推理工具

Llama-3.2V-11B-cot部署教程:双卡4090一键启动视觉推理工具 1. 项目概述 Llama-3.2V-11B-cot是基于Meta多模态大模型开发的高性能视觉推理工具,专为双卡4090环境优化。它解决了传统大模型部署复杂、视觉权重加载失败等痛点,让普通用户也能轻…...

3分钟掌握终极ASCII艺术转换:免费将图片视频变成字符画的神奇工具 [特殊字符]

3分钟掌握终极ASCII艺术转换:免费将图片视频变成字符画的神奇工具 🎨 【免费下载链接】ASCII-generator ASCII generator (image to text, image to image, video to video) 项目地址: https://gitcode.com/gh_mirrors/as/ASCII-generator 想不想…...

3步打造静音ThinkPad:双风扇控制技术指南

3步打造静音ThinkPad:双风扇控制技术指南 【免费下载链接】TPFanCtrl2 ThinkPad Fan Control 2 (Dual Fan) for Windows 10 and 11 项目地址: https://gitcode.com/gh_mirrors/tp/TPFanCtrl2 一、技术原理与核心优势 1.1 笔记本散热系统的工作瓶颈 大多数笔…...

零基础玩转OpenClaw:星图GPU百川2-13B量化镜像体验报告

零基础玩转OpenClaw:星图GPU百川2-13B量化镜像体验报告 1. 为什么选择星图平台的OpenClaw镜像 作为一个长期关注AI工具但苦于本地配置复杂度的普通用户,当我发现星图平台提供预装OpenClaw和百川2-13B量化模型的"开箱即用"镜像时,…...

像素幻梦部署实战:阿里云ECS+GPU实例零配置运行像素工坊全记录

像素幻梦部署实战:阿里云ECSGPU实例零配置运行像素工坊全记录 1. 像素幻梦创意工坊简介 像素幻梦(Pixel Dream Workshop)是一款基于FLUX.1-dev扩散模型的下一代像素艺术生成工具。它采用独特的16-bit像素工坊视觉设计,为创作者提供沉浸式的AI绘图体验。…...

4G Cat.1内网穿透技术实现与优化

基于4G Cat.1的内网穿透技术实现1. 项目概述1.1 系统架构本项目实现了一个基于4G Cat.1通信模块的内网穿透解决方案,通过公网服务器中转,建立开发板与内网PC之间的TCP通信链路。系统由以下三个主要部分组成:4G终端设备:搭载Cat.1通…...

OpenClaw 采用分层解耦的架构设计,请详细说明其核心架构分层(至少 4 层)及各层的核心职责,并描述一条自然语言指令从输入到任务完成的完整执行闭环流程。

一、核心架构分层(四层/五层模型) OpenClaw 采用 分层解耦的模块化架构,主流技术文档将其划分为 四层核心架构,部分资料扩展为五层。以下是整合后的完整架构: 层级名称核心职责关键技术组件第一层交互接入层(Interfa…...

NaViL-9B开源模型生态:HuggingFace模型卡+GitHub训练代码指引

NaViL-9B开源模型生态:HuggingFace模型卡GitHub训练代码指引 1. 平台简介 NaViL-9B是上海人工智能实验室发布的一款原生多模态大语言模型,支持纯文本问答和图片理解双重能力。作为开源社区的重要贡献,该模型已在HuggingFace平台发布模型卡&…...

SUPER COLORIZER 数据库集成实践:MySQL管理海量图像处理任务与结果

SUPER COLORIZER 数据库集成实践:MySQL管理海量图像处理任务与结果 如果你正在管理一个需要批量处理成千上万张图片的项目,比如给老照片上色、统一调整产品图风格,或者为电商平台批量生成不同尺寸的图片,那你肯定遇到过这样的烦恼…...

AI 模型精度与性能的权衡

AI模型精度与性能的权衡:寻找最佳平衡点 在人工智能领域,模型的精度与性能往往是一对矛盾体。精度代表模型预测的准确性,而性能则涉及计算速度、资源占用和实时性等指标。开发者常常需要在两者之间做出权衡,以满足不同场景的需求…...