力扣(LeetCode) 66: 加一 - 解法思路

问题概述

给定一个由整数数组表示的大整数 digits,将其加一并返回结果数组。

解法 1:简单方法

工作原理

从右到左处理数字。如果数字小于 9,则加一并返回。否则,将其设为 0 并继续。如果所有数字都是 9,则在前面添加新数字:

python 复制代码
class Solution:
    def plusOne(self, digits):
        for i in range(len(digits) - 1, -1, -1):
            if digits[i] < 9:
                digits[i] += 1
                return digits
            else:
                digits[i] = 0
        
        return [1] + digits

复杂度分析

  • 时间复杂度: O(n) - 最坏情况当所有数字都是 9 时需要扫描整个数组
  • 空间复杂度: O(1) - 不包括输出数组,只使用常数额外空间

何时使用

  • 推荐 - 简单高效
  • 处理所有情况,包括进位传播
  • 当不需要进位时提前返回

对比

方法 时间 空间 最佳适用
简单方法 O(n) O(1) 大多数情况,逻辑清晰

总结

关键思路是从右到左处理数字。当数字小于 9 时,可以立即加一并返回(无进位)。当数字是 9 时,将其设为 0 并继续(进位传播)。如果所有数字都是 9,需要在前面添加新数字 [1]。这个解法高效地实现了这一逻辑,时间复杂度为 O(n),空间复杂度为 O(1)。

相关推荐
偷吃的耗子10 小时前
【CNN算法理解】:CNN平移不变性详解:数学原理与实例
人工智能·算法·cnn
亓才孓10 小时前
[Class类的应用]反射的理解
开发语言·python
小镇敲码人10 小时前
深入剖析华为CANN框架下的Ops-CV仓库:从入门到实战指南
c++·python·华为·cann
摘星编程11 小时前
深入理解CANN ops-nn BatchNormalization算子:训练加速的关键技术
python
魔芋红茶11 小时前
Python 项目版本控制
开发语言·python
lili-felicity11 小时前
CANN批处理优化技巧:从动态批处理到流水线并行
人工智能·python
一个有梦有戏的人11 小时前
Python3基础:进阶基础,筑牢编程底层能力
后端·python
dazzle11 小时前
机器学习算法原理与实践-入门(三):使用数学方法实现KNN
人工智能·算法·机器学习
那个村的李富贵11 小时前
智能炼金术:CANN加速的新材料AI设计系统
人工智能·算法·aigc·cann
摘星编程11 小时前
解析CANN ops-nn中的Transpose算子:张量维度变换的高效实现
python