当前位置: 首页
AI教程
Leetcode加一解法 Java与Python3实现

Leetcode加一解法 Java与Python3实现

热心网友 时间:2026-05-30
转载

LeetCode 加一:数组加一算法详解与边界处理

这道题表面简单,却是许多面试中热衷考察的“边界细节”题目。给你一个非空整数数组,每个元素只存储一位数字,整个数组表示一个非负整数——例如 [1,2,3] 对应数字 123。现在需要在这个整数的基础上加一,并返回加一后的数组结果。

Leetcode加一 (ja va、python3)

最高位数字存放在数组的首位,并且我们可以假设除了整数 0 本身之外,这个整数不会以零开头——也就是说,输入不会是 [0,1,2] 这类格式。

英文题目描述如下:Given a non-empty array of digits representing a non-negative integer, plus one to the integer. The digits are stored such that the most significant digit is at the head of the list, and each element in the array contain a single digit. You may assume the integer does not contain any leading zero, except the number 0 itself.

下面通过两个示例来直观理解:

示例 1:
输入: [1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字 123。

示例 2:
输入: [4,3,2,1] 输出: [4,3,2,2] 解释: 输入数组表示数字 4321。

看起来直接转成整数加一就能解决?但别忘了,数组元素可能多达几千位,普通整型根本无法存储。因此必须采用“模拟竖式加法”的思路来逐位处理进位。

Java 解法:

class Solution {
    public int[] plusOne(int[] digits) {
        for( int i=digits.length;i>=0;i--){
            if(digits[i] 1==10){
                digits[i]=0;
            }else {
                digits[i] =1;
                break;
            }
        }
        if(digits[0]==0){
            int[] digits2=new int[digits.length 1];
            digits2[0]=1;
            return digits2;
        }else {
            return digits;
        }
    }
}

解题思路详解:

核心逻辑非常直观:从数组的最右端(即个位)开始向左遍历。如果当前位加一后等于10,说明需要进位,将该位设为0,然后继续处理前一位;若加一后不等于10,则加一操作完成,直接跳出循环。有一个容易被忽略的细节:当所有位都进位时(例如 [9,9,9]),循环结束后数组首位会变成0,此时需要新建一个长度加一的数组,将第一位设为1,其余位全为0。上面Java代码正是按照这个思路实现的——先处理进位,最后判断首位是否为0,若是则扩容数组。

Python3 解法:

class Solution:
    def plusOne(self, digits: List[int]) -> List[int]:
        """
        :type digits: int
        :return: int
        """
        num = 0
        for i in range(len(digits)):
            num = num*10   digits[i]
        return [int(i) for i in str(num 1)]

Python3 的解法更加灵活。上面这种写法先将整个数组拼接成一个整数,然后加一,再转回字符数组并拆分为列表。思路简单直接,但需要注意:如果数组长度极大(例如几千位),Python 虽然能处理大整数,但转换成字符串再拆分也算一种取巧方式。当然也可以采用类似 Java 的手动进位处理,或者利用 Python 列表的动态特性。

举个例子:可以将数组反转,使用 reversed(digits),然后逐项加一并处理进位,若最后一位仍为0(说明仍需进位),则直接在数组末尾追加一个1,最后再反转回来。因为 Python 列表支持动态扩展,无需像 Java 那样新建固定长度数组,代码写起来更为简洁。

来源:https://developer.aliyun.com/article/704487

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
AI文档助手颠覆写作界究竟是革命还是噱头

AI文档助手颠覆写作界究竟是革命还是噱头

写作时总在字词上反复纠结,费了半天劲也憋不出一篇像样的文章——这种痛苦,不少人都经历过。好在文档AI写作助手来了,用智能化的方式帮我们卸下了这块心头大石。 这项工具在写作圈里掀起了不小的波澜。说到底,它背后的AI技术就像凭空变出了一个能写会写的机器人:只要给定主题和角度,它就能自动生成内容充实、风格

时间:2026-05-30 08:53
Silatus为初创及小型企业提供安全私密AI工具保护数据

Silatus为初创及小型企业提供安全私密AI工具保护数据

Silatus产品介绍:为初创企业量身打造的安全AI工具在人工智能工具层出不穷的当下,初创企业和小型团队普遍面临两大难题:既希望获得高效便捷的功能,又担忧敏感数据被滥用或泄露。Silatus正是针对这一痛点而生——作为一款专为成长型团队设计的生成式AI平台,其核心价值在于“以人为本、隐私优先、价格亲

时间:2026-05-30 08:53
AI智能体工具助力视频创作高效提升

AI智能体工具助力视频创作高效提升

在AI视频创作领域,有一款工具正在悄然改变“制作视频”的方式——它就是AIPAI。与其说它是一个简单的“文字转视频”工具,不如说它像一个随时待命的虚拟制作团队:你只需要提出一个创意,它就能自动拆解任务、撰写剧本、绘制分镜、完成配音、进行剪辑,直至输出成片。简单来说,就是将视频制作的难度降低到“开口说

时间:2026-05-30 08:52
数据是第一生产力:AI小分子药物发现困境与出路

数据是第一生产力:AI小分子药物发现困境与出路

先分享一个我们最近读到的判断,它可能颠覆很多人的直觉。近年来,机器学习的热潮确实席卷了小分子药物发现领域,各种新模型、新算法层出不穷,让人感觉“新药研发的黄金时代”近在眼前。但牛津大学 Charlotte Deane 课题组的一篇 Perspective,却以罕见的冷静与犀利,为这股热潮泼了一盆冷水

时间:2026-05-30 08:51
开源平台助力多靶点结构活性关系研究

开源平台助力多靶点结构活性关系研究

面对复杂疾病的治疗困境,传统“一药一靶”的研发范式正遭遇瓶颈。癌症的旁路补偿机制、阿尔茨海默病的多因素协同致病、多重耐药菌的狡猾逃逸策略,均表明单一靶点突破的黄金时期正逐渐远去。与此同时,海量化学与生物数据以前所未有的速度积累,如何将这些数据转化为切实可行的解决方案——例如设计出能够同时精准作用于多

时间:2026-05-30 08:50
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 日榜
  • 周榜
  • 月榜
热门教程
更多
  • 游戏攻略
  • 安卓教程
  • 苹果教程
  • 电脑教程