LeetCode 66. 加一(数组进位处理详解 + Java Python 实现)
LeetCode 66. 加一数组进位处理详解 Java/Python 实现题目链接66. 加一 - 力扣LeetCode题目描述给定一个表示大整数的整数数组digits其中digits[i]是整数的第i位数字。这些数字按从左到右从最高位到最低位排列。这个大整数不包含任何前导0。将大整数加1并返回结果的数字数组。示例示例 1输入digits [1,2,3] 输出[1,2,4] 解释输入数组表示数字 123。 加 1 后得到 123 1 124。 因此结果应该是 [1,2,4]。示例 2输入digits [4,3,2,1] 输出[4,3,2,2] 解释输入数组表示数字 4321。 加 1 后得到 4321 1 4322。 因此结果应该是 [4,3,2,2]。示例 3输入digits [9] 输出[1,0] 解释输入数组表示数字 9。 加 1 得到了 9 1 10。 因此结果应该是 [1,0]。提示1 digits.length 1000 digits[i] 9digits不包含任何前导0解题思路这道题的核心是模拟数字加法的进位过程。我们需要从最低位数组末尾开始逐位加 1处理可能出现的进位。关键点分析从右往左遍历因为加 1 操作从最低位开始所以要从数组末尾开始遍历。遇到非 9 的数字直接加 1 并返回因为不会产生进位。遇到 9将当前位设为 0继续向前遍历因为需要进位。全是 9 的情况如果遍历完所有位都是 9说明需要增加一位新数组长度为digits.length 1首位为 1其余位为 0。举例说明例子 1digits [1,2,3]从末尾开始index 2digits[2] 3不是 9加 1 变成 4返回[1,2,4]。例子 2digits [1,9,9]index 2digits[2] 9设为 0。index 1digits[1] 9设为 0。index 0digits[0] 1不是 9加 1 变成 2返回[2,0,0]。例子 3digits [9,9,9]index 2digits[2] 9设为 0。index 1digits[1] 9设为 0。index 0digits[0] 9设为 0。循环结束创建新数组[1,0,0,0]返回。代码实现Java 最优写法推荐classSolution{publicint[]plusOne(int[]digits){for(intindexdigits.length-1;index0;index--){if(digits[index]!9){digits[index]1;returndigits;}digits[index]0;}int[]newArrnewint[digits.length1];newArr[0]1;returnnewArr;}}Python 版本classSolution(object):defplusOne(self,digits): :type digits: List[int] :rtype: List[int] indexlen(digits)-1whileindex0:ifdigits[index]!9:digits[index]1returndigits digits[index]0index-1digits.insert(0,1)returndigits代码说明Java 版本从末尾开始遍历for (int index digits.length - 1; index 0; index--)。遇到非 9 的数字if(digits[index]!9){digits[index]1;returndigits;}直接加 1 并返回因为不会产生进位后面的高位不需要改变。遇到 9digits[index]0;当前位设为 0继续向前遍历处理进位。循环结束仍未返回说明所有位都是 9例如[9,9,9]。此时需要int[]newArrnewint[digits.length1];newArr[0]1;returnnewArr;创建新数组长度为原长度加 1首位为 1其余位默认为 0。Python 版本Python 版本思路与 Java 版本完全一致只是语法不同使用while循环代替for循环。使用digits.insert(0, 1)在列表头部插入元素 1这比 Java 创建新数组更简洁。复杂度分析时间复杂度O(n)最坏情况下需要遍历整个数组全是 9 的情况。空间复杂度O(1)除了全是 9 的情况需要创建数组外其余情况都是原地修改。即使创建新数组空间复杂度也是O(n)但这是必要的。常见错误写法分析有些同学可能会写出下面这样的代码publicint[]plusOne(int[]digits){for(intindexdigits.length-1;index0;index--){intcdigits[index];if(index0c9){// return1returndigitals;// 错误变量名写错应该是 digits}if(c!9){// return2returndigits;// 错误这里没有加 1}else{digits[index]0;}}// 语法兜底逻辑永远执行不到returndigits;}这段代码存在几个问题变量名拼写错误digitals应该是digits。逻辑错误在c ! 9的分支中直接返回了digits但没有执行digits[index] 1操作。这样即使遇到非 9 的数字也不会加 1。特殊情况处理不当当index 0 c 9时应该创建新数组返回但代码只是返回了原数组没有处理进位。正确思路对比最优写法之所以简洁是因为它抓住了问题的本质遇到非 9 就加 1 返回这是最常见的情况直接处理。遇到 9 就设为 0 继续处理进位。循环结束仍未返回说明全是 9需要扩展数组。这种写法不需要额外的变量也不需要特殊的边界判断逻辑非常清晰。Java 和 Python 实现对比Java 的特点数组长度固定需要创建新数组来处理全 9 的情况。使用for循环语法更紧凑。返回值类型是int[]。Python 的特点列表是动态的可以使用insert方法在头部插入元素。使用while循环控制更灵活。返回值类型是List[int]。共同点两者的核心逻辑完全一致从右往左遍历非 9 加 1 返回9 设为 0 继续全 9 处理进位总结这道题虽然简单但很好地考察了对数组操作和进位处理的理解。核心要点从右往左遍历模拟加法的进位过程。遇到非 9 直接加 1 返回这是最普遍的情况。遇到 9 设为 0 继续处理进位。全是 9 的特殊情况需要创建新数组长度为原长度加 1首位为 1。关键点回顾遍历方向从数组末尾到开头非 9 处理digits[index] 1; return digits;9 的处理digits[index] 0;全 9 处理创建新数组首位为 1Java或insert(0, 1)Python这道题的思路也可以扩展到其他进位相关的题目比如字符串相加、二进制加法等。掌握这个模板对解决类似问题很有帮助。

相关新闻

CSS3新增标签总结

CSS3新增标签总结

一、新增语义化标签1.header:页面头部; 2.footer:页脚。 3.nav:导航 4.article:文章、帖子、新闻一类。 5.section:页面里的某一段文字(通常含有标题) 6.aside:侧边栏。 …

2026/8/16 4:33:18 阅读更多 →
VSCode集成Cppcheck:Windows下C/C++代码静态分析与质量提升实战

VSCode集成Cppcheck:Windows下C/C++代码静态分析与质量提升实战

1. 项目概述与核心价值在Windows环境下用VSCode写C/C代码,调试和编译的便利性自不必说,但代码质量这块,尤其是那些潜在的、编译时发现不了的逻辑缺陷、内存泄漏和未定义行为,往往得等到运行时甚至上线后才暴露出来,这就…

2026/8/16 4:33:18 阅读更多 →
构建动态技能地图:从元技能到专业能力的系统化成长指南

构建动态技能地图:从元技能到专业能力的系统化成长指南

1. 从“技能焦虑”到“技能地图”:一份真正有用的个人能力清单最近和几个不同行业的朋友聊天,发现一个挺有意思的现象:大家普遍都挺“慌”的。这种“慌”不是没活儿干,而是活儿太多、变化太快,总感觉自己的技能包不够用…

2026/8/18 2:00:26 阅读更多 →

最新新闻

突破B站直播姬限制:B站直播推流码一键获取与OBS深度配置指南

突破B站直播姬限制:B站直播推流码一键获取与OBS深度配置指南

突破B站直播姬限制:B站直播推流码一键获取与OBS深度配置指南 【免费下载链接】bilibili_live_stream_code 获取B站直播推流码,支持开关播,管理直播标题、分区,显示弹幕和礼物。 项目地址: https://gitcode.com/gh_mirrors/bi/bi…

2026/8/18 14:47:16 阅读更多 →
awesome-deepseek-agent 原理:DeepSeek V4 思考模式如何工作

awesome-deepseek-agent 原理:DeepSeek V4 思考模式如何工作

awesome-deepseek-agent 原理:DeepSeek V4 思考模式如何工作 【免费下载链接】awesome-deepseek-agent 项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-deepseek-agent 你是否好奇,DeepSeek V4 为什么能做到"先想后答"&am…

2026/8/18 14:47:16 阅读更多 →
deepwiki-rs支持哪些编程语言?12种语言解析器与8种输出语言能力全览

deepwiki-rs支持哪些编程语言?12种语言解析器与8种输出语言能力全览

deepwiki-rs支持哪些编程语言?12种语言解析器与8种输出语言能力全览 【免费下载链接】deepwiki-rs Turn code into clarity. Generate accurate technical docs and AI-ready context in minutes—perfectly structured for human teams and intelligent agents. …

2026/8/18 14:47:15 阅读更多 →
WeBlog 数据库设计全解析:8 张核心表如何撑起整个博客系统

WeBlog 数据库设计全解析:8 张核心表如何撑起整个博客系统

WeBlog 数据库设计全解析:8 张核心表如何撑起整个博客系统 【免费下载链接】WeBlog 📗 Spring Boot Vue 3.2 Vite 4.3 前后端分离个人博客(可作为 Java 毕业设计项目)~ 感谢点个 Star 呀~ 项目地址: https://gitcode.com/gh_m…

2026/8/18 14:47:15 阅读更多 →
PowerToys中文版完整使用教程:免费全汉化的微软效率工具箱,安装与进阶配置一篇搞定

PowerToys中文版完整使用教程:免费全汉化的微软效率工具箱,安装与进阶配置一篇搞定

PowerToys中文版完整使用教程:免费全汉化的微软效率工具箱,安装与进阶配置一篇搞定 【免费下载链接】PowerToys-CN PowerToys Simplified Chinese Translation 微软增强工具箱 自制汉化 项目地址: https://gitcode.com/gh_mirrors/po/PowerToys-CN …

2026/8/18 14:47:15 阅读更多 →
【单片机课设毕设项目】基于 STM32/51 单片机的按键可调阈值气压检测报警平台设计 物联网架构下单片机气压感知与蓝牙移动端监控系统设计(022403)

【单片机课设毕设项目】基于 STM32/51 单片机的按键可调阈值气压检测报警平台设计 物联网架构下单片机气压感知与蓝牙移动端监控系统设计(022403)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/8/18 14:46:15 阅读更多 →

日新闻

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt 如果你还停留在"看网课 不停暂停 截图 …

2026/8/18 0:00:57 阅读更多 →
思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 你是不是也经历过这种时刻:设计稿里…

2026/8/18 0:00:58 阅读更多 →
华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, …

2026/8/18 0:00:59 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/18 9:15:35 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/18 9:06:28 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/18 9:04:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/17 18:54:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/17 18:55:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/17 18:55:55 阅读更多 →