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

LeetCode 9. 回文数:两种高效解法详解

LeetCode入门级经典题——9.回文数这道题看似简单却藏着两种思路截然不同的高效解法尤其适合刚接触算法的小伙伴巩固基础。话不多说我们直接进入正题一、题目回顾题目很简洁给你一个整数 x 如果 x 是一个回文整数返回 true 否则返回 false 。核心定义回文数是指正序从左向右和倒序从右向左读都是一样的整数。举几个例子帮大家快速理解输入121 → 输出true正序121倒序121一致输入-121 → 输出false正序-121倒序121-不一致输入10 → 输出false正序10倒序01即1不一致这里有个小细节负数一定不是回文数因为负号倒序后会在末尾无法匹配末尾为0的非0整数也不是回文数比如10、100倒序后开头为0和原数不一致这两个细节会成为我们优化解法的关键。二、解法一完整反转整数直观易懂1. 解法思路最直观的思路就是将整数完整反转然后和原数对比如果相等就是回文数否则不是。核心步骤先判断边界如果 x 0直接返回 false负数无回文定义两个变量cur 保存原数的副本用于后续反转操作避免修改原数revN 保存反转后的整数初始为0循环反转通过取余cur % 10获取 cur 的末尾数字通过乘10revN * 10将反转后的数字左移一位再加上末尾数字同时将 cur 除以10向下取整直到 cur 变为0对比反转后的数字revN和原数x相等则返回 true否则返回 false。2. 代码实现TypeScriptfunctionisPalindrome_1(x:number):boolean{if(x0)returnfalse;letcurx;letrevN0;while(cur!0){revNcur%10revN*10;curMath.floor(cur/10);}returnrevNx;};3. 解法分析优势思路简单、代码简洁容易理解和上手适合算法新手入门练习。注意点虽然题目中没有明确说明整数溢出的问题但在实际场景中反转后的整数可能会超过 Number 的最大范围比如 x 2^31 - 1反转后会溢出。不过在 LeetCode 这道题的测试用例中这种情况不会出现所以该解法可以直接通过。时间复杂度O(n)n 是整数 x 的位数因为循环次数等于 x 的位数。空间复杂度O(1)只使用了3个变量cur、revN、x没有使用额外的空间。三、解法二反转一半整数优化高效1. 解法思路解法一的优化版我们不需要反转整个整数只需要反转整数的后半部分然后和前半部分对比即可这样可以减少一半的循环次数效率更高。核心逻辑先判断边界① x 0 → false② x 末尾为0且 x ≠ 0 → false比如10、100定义变量 revertedNumber 保存反转的后半部分初始为0循环反转后半部分当 x revertedNumber 时说明还没反转到一半继续取 x 的末尾数字添加到 revertedNumber 中同时 x 除以10向下取整对比判断循环结束后有两种情况如果 x 的位数是偶数比如1221则 x 应该等于 revertedNumberx12revertedNumber12如果 x 的位数是奇数比如12321则 x 应该等于 revertedNumber 除以10去掉中间的数字3x12revertedNumber123 → 123/1012。2. 代码实现TypeScriptfunctionisPalindrome_2(x:number):boolean{if(x0||(x%100x!0)){returnfalse;}letrevertedNumber:number0;while(xrevertedNumber){revertedNumberrevertedNumber*10x%10;xMath.floor(x/10);}returnxrevertedNumber||xMath.floor(revertedNumber/10);};3. 解法分析优势相比解法一循环次数减少了一半效率更高同时避免了反转整个整数可能出现的溢出问题因为只反转一半反转后的数字一定不会超过原数也就不会溢出。注意点边界判断的第二个条件x % 10 0 x ! 0容易遗漏比如输入10不判断的话循环后 x1revertedNumber0会误判为 true加上这个条件就能避免。时间复杂度O(n/2) O(n)虽然循环次数减少一半但时间复杂度的量级不变不过实际运行速度会更快。空间复杂度O(1)和解法一一样只使用了少量变量无额外空间消耗。四、两种解法对比总结解法核心思路优势注意点解法一完整反转反转整个整数与原数对比思路简单、代码简洁易理解可能存在整数溢出LeetCode测试用例无影响解法二反转一半反转后半部分与前半部分对比效率更高无溢出问题边界判断易遗漏末尾为0的非0整数五、刷题小技巧边界条件优先考虑这道题的边界负数、末尾为0的非0数是解题的关键先处理边界能减少后续逻辑的复杂度也能避免误判。优化思路的核心当需要反转整数时优先考虑“反转一半”既能提高效率又能规避溢出风险这种“减半操作”在很多整数相关的算法题中都能用到。测试用例覆盖写完代码后记得测试几个典型用例负数、末尾为0的数、奇数位整数、偶数位整数、单个数字确保代码的正确性。六、总结LeetCode 9.回文数是一道非常适合入门的算法题两种解法各有优劣解法一适合新手理解思路解法二适合优化效率。通过这道题我们可以巩固“整数反转”的核心逻辑同时学会关注边界条件和算法优化。

相关文章:

LeetCode 9. 回文数:两种高效解法详解

LeetCode入门级经典题——9.回文数,这道题看似简单,却藏着两种思路截然不同的高效解法,尤其适合刚接触算法的小伙伴巩固基础。话不多说,我们直接进入正题! 一、题目回顾 题目很简洁:给你一个整数 x &#x…...

Qwen3-TTS开源大模型实操:批量处理CSV文本并生成多语种MP3音频的Python脚本

Qwen3-TTS开源大模型实操:批量处理CSV文本并生成多语种MP3音频的Python脚本 1. 为什么你需要这个脚本:从手动点选到全自动批量合成 你有没有试过用Qwen3-TTS WebUI生成几十条产品介绍语音?每次打开页面、粘贴文本、选语言、点生成、等加载、…...

AI辅助开发:让快马平台Kimi模型帮你编写狼蛛f87pro键盘的智能配置逻辑

最近在折腾狼蛛F87Pro机械键盘的深度配置,发现它的驱动功能虽然强大,但配置逻辑稍微复杂了点。特别是想实现一些高级的宏命令和情景模式切换时,手动编写配置文件容易出错。后来尝试用InsCode(快马)平台的AI辅助开发功能,整个过程顺…...

PP-DocLayoutV3详细步骤:image图像块识别+seal印章区域高亮标注输出

PP-DocLayoutV3详细步骤:image图像块识别seal印章区域高亮标注输出 你是不是经常遇到这样的烦恼:拿到一份扫描的合同或发票,想快速找到里面的关键信息,比如签名、印章、表格,但文档是歪的、有褶皱,或者印章…...

Outfit字体全面解析与实战指南:现代设计的无衬线字体解决方案

Outfit字体全面解析与实战指南:现代设计的无衬线字体解决方案 【免费下载链接】Outfit-Fonts The most on-brand typeface 项目地址: https://gitcode.com/gh_mirrors/ou/Outfit-Fonts Outfit字体作为一款现代开源无衬线字体,以其完整的9种字重体…...

打卡信奥刷题(3076)用C++实现信奥题 P7015 [CERC2013] Crane

P7015 [CERC2013] Crane 题目描述 有 nnn 个箱子等着装上船。箱子的编号是 a1,a2,⋯ ,ana_1,a_2,\cdots,a_na1​,a2​,⋯,an​。你的工作是通过若干次交换,将它们从小到大排列。你每次可以选择一个区间,将它的前半部分与后半部分交换,两半内…...

效率倍增:用快马平台自动化测试openclaw多模型性能

最近在开发机器人抓取算法时,经常需要对比不同模型的性能表现。传统方法需要手动切换模型、反复运行测试脚本,效率实在太低。经过一番摸索,我在InsCode(快马)平台上搭建了一个自动化测试工具,效果提升显著,分享下具体实…...

AI赋能前端设计:使用快马平台智能生成旅行博客网站首页

最近尝试用AI辅助开发一个旅行博客网站首页,整个过程比想象中顺利很多。作为一个经常需要快速产出前端页面的开发者,这种智能生成代码的方式确实带来了不少便利。下面记录下我的实践过程和一些思考。 需求分析与AI沟通 首先需要明确页面的核心模块&…...

Adobe Illustrator 2026 v30(AI2026)安装教程及下载

我用夸克网盘给你分享了「矢量绘图Adob...已激活版」,点击链接或复制整段内容,打开「夸克APP」即可获取。筷莱蜴蝮鰉鰗鰘夺郝/~b12b3Y1kyM~:/链接:https://pan.quark.cn/s/38566e6aec26Adobe矢量绘图软件Adobe Illustrator 2026(AI2026)是一款…...

产品经理开需求会必看!2026年5款会议纪要自动生成软件,真香体验散会就出完整纪要

做产品的天天泡需求会,做销售的天天跑客户要整理录音,做学生的天天要整理访谈,不同人对转写工具的需求天差地别——有人要准确率不能漏需求,有人要便宜不能月月大出血,有人要能识别方言听不懂客户说啥也不怕。我测了市…...

Z-Image Turbo进阶指南:自定义模型替换操作步骤

Z-Image Turbo进阶指南:自定义模型替换操作步骤 1. 了解Z-Image Turbo的核心优势 Z-Image Turbo是一个基于Gradio和Diffusers构建的高性能AI绘图工具,专为追求效率和质量的创作者设计。它最大的特点是能够在极短时间内生成高质量图像,通常只…...

NASA Earthdata保姆级教程:手把手教你用矩形框批量下载MODIS和VIIRS遥感数据

NASA Earthdata零基础实战:从注册到批量下载MODIS/VIIRS遥感数据的完整指南 第一次接触NASA Earthdata网站时,面对满屏的专业术语和复杂操作界面,大多数科研新手都会感到手足无措。作为全球最大的对地观测数据平台之一,Earthdata…...

终极指南:如何安全降级旧款iPhone和iPad系统,轻松延长设备寿命

终极指南:如何安全降级旧款iPhone和iPad系统,轻松延长设备寿命 【免费下载链接】Legacy-iOS-Kit An all-in-one tool to restore/downgrade, save SHSH blobs, jailbreak legacy iOS devices, and more 项目地址: https://gitcode.com/gh_mirrors/le/L…...

PX4+Gazebo仿真:从键盘指令到无人机轨迹的Offboard控制实践

1. 环境搭建与基础配置 在开始PX4Gazebo仿真之前,我们需要先搭建好开发环境。我推荐使用Ubuntu 20.04 LTS系统,这是目前最稳定的ROS Noetic支持版本。记得第一次配置环境时,我花了整整一天时间解决各种依赖问题,现在把这些经验都总…...

SAM 3图像分割:支持点、框、掩码提示,交互式分割体验

SAM 3图像分割:支持点、框、掩码提示,交互式分割体验 想象一下,你有一张复杂的街景照片,里面有行人、车辆、树木和建筑。现在你想把照片里那辆红色的汽车单独抠出来,用来做一张海报。传统的方法可能需要你打开专业的图…...

如何让旧款iOS设备重获新生:Legacy-iOS-Kit全攻略

如何让旧款iOS设备重获新生:Legacy-iOS-Kit全攻略 【免费下载链接】Legacy-iOS-Kit An all-in-one tool to restore/downgrade, save SHSH blobs, jailbreak legacy iOS devices, and more 项目地址: https://gitcode.com/gh_mirrors/le/Legacy-iOS-Kit 当你…...

拖曳阵声纳系统技术开源情报(OSINT)综合分析

执行摘要 本报告基于印度国防研究与发展组织(DRDO)海军物理与海洋ographic实验室(NPOL)发布的ALTAS技术转让文件,结合全球开源情报,系统分析了拖曳阵声纳(Towed Array Sonar, TAS)的关键技术、开源实现、学术前沿和商业系统。情报显示,现代拖曳阵声纳技术正向双/多静…...

仙境传说RO:自定义商店脚本全解析与实战指南

1. 自定义商店脚本基础入门 在仙境传说RO私服开发中,自定义商店是最基础也最实用的功能之一。我第一次搭建商店时,花了整整三天才搞明白那些看似简单的脚本参数。现在回头看,其实掌握几个核心要点就能轻松上手。 商店脚本主要分为三种类型&am…...

汇川伺服Modbus通讯踩坑实录:从“通信超时”到“数据错乱”的五个常见故障排查指南

汇川伺服Modbus通讯实战:五大典型故障排查与深度解析 调试现场的温度总是比办公室高几度,尤其是当你面对一台"沉默"的汇川伺服驱动器时。Modbus-RTU协议作为工业自动化领域的"普通话",理论上应该让不同设备间的对话变得…...

突破限制的AI开发助手:Cursor Free VIP开源工具全攻略

突破限制的AI开发助手:Cursor Free VIP开源工具全攻略 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your tri…...

leetcode 1624. 两个相同字符之间的最长子字符串-耗时100

Problem: 1624. 两个相同字符之间的最长子字符串 耗时100%&#xff0c;双指针&#xff0c;找到相同的以后直接break以及拿到最大值 Code class Solution { public:int maxLengthBetweenEqualCharacters(string s) {int n s.size(), mx -1;char ch;for(int i 0; i < n; i…...

3步终极指南:如何快速解决openpilot驾驶辅助系统的5大常见问题

3步终极指南&#xff1a;如何快速解决openpilot驾驶辅助系统的5大常见问题 【免费下载链接】openpilot openpilot is an operating system for robotics. Currently, it upgrades the driver assistance system on 300 supported cars. 项目地址: https://gitcode.com/GitHub…...

3步实现B站M4S格式转换:开源工具全流程指南

3步实现B站M4S格式转换&#xff1a;开源工具全流程指南 【免费下载链接】m4s-converter 一个跨平台小工具&#xff0c;将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter B站缓存的M4S格式&#xff08;B站采用的分…...

Makefile 入门与 C/C++ 项目构建指南

Makefile 入门与 C/C 项目构建指南 本文面向 C/C 初学者与日常维护多文件工程的开发者&#xff0c;系统说明 GNU Make 与 Makefile 的作用、执行逻辑、常用语法与可复用模板&#xff0c;帮助从「手动敲 gcc」过渡到可维护的自动化构建&#xff0c;并具备阅读、修改常见开源项目…...

终极指南:5分钟学会永久免费使用Cursor Pro的完整教程

终极指南&#xff1a;5分钟学会永久免费使用Cursor Pro的完整教程 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your tri…...

LVGL图像转换工具:离线高效处理方案

1. LVGL图像转换工具简介 第一次接触LVGL图像转换工具时&#xff0c;我正为一个嵌入式项目头疼。客户要求UI界面必须流畅&#xff0c;但资源受限的MCU根本吃不消常规图片格式。直到发现这个神器&#xff0c;才明白原来图片还能这样玩。 LVGL图像转换工具&#xff08;lv_img_con…...

3PEAK思瑞浦 TPW4052-TR TSSOP16 模拟开关/多路复用器

特性模拟开关电压&#xff1a;3.3V、5V、10V、5V低导通电阻&#xff1a;在 Vs 4.5V 或 9V 时典型值为 50Ω&#xff1b;在 Vs 4.5V 时典型值为 60Ω&#xff1b;在 VS 3V 时典型值为 300Ω带宽&#xff1a;200 MHz快速开关时间&#xff1a;ΔtON 60 ns&#xff0c;tOFF 50…...

抠图怎么让边缘自然?别自己拿大剪刀,让工具替你“绣花”

还在大刀阔斧自己“操刀”抠图吗&#xff1f;边缘不是模糊发虚就是抠不干净&#xff0c;留着一圈难看的毛边&#xff0c;修来修去还是假得明显&#xff0c;纯属浪费时间。其实抠图怎么让边缘自然&#xff0c;找对合适工具就能让它替你“绣花”般精细抠图&#xff0c;比自己拿“…...

效率提升秘籍:用快马AI一键生成可复用的课堂管理系统登录组件代码

在开发课堂管理系统这类教育软件时&#xff0c;登录模块往往是第一个需要实现的组件。传统手动编写方式不仅耗时&#xff0c;还容易遗漏关键细节。最近尝试用InsCode(快马)平台的AI生成功能&#xff0c;发现它能快速产出符合生产标准的代码&#xff0c;这里分享我的实践心得。 …...

QuantLib避坑指南:从编译安装到多线程优化的5个实战经验

QuantLib工程化实战&#xff1a;从编译优化到高并发设计的5个关键策略 在金融科技领域&#xff0c;QuantLib作为开源的量化金融计算库&#xff0c;已经成为众多机构的核心基础设施。但将QuantLib真正投入生产环境时&#xff0c;开发团队往往会遇到一系列工程化挑战——从复杂的…...