力扣(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)。

相关推荐
旧曲重听19 分钟前
为什么现在 RAG 越少越少提及了
数据库·程序人生·职场和发展·agent
言乐616 分钟前
Python实现建造微服务商城后台
开发语言·python·算法·微服务·架构
凉云生烟41 分钟前
机器学习 02- KNN算法
人工智能·算法·机器学习
fenglllle42 分钟前
chromadb emmbedding 向量检索
人工智能·python·embedding
wabs66643 分钟前
关于动态规划【力扣583.两个字符串的删除操作的思考】
算法·leetcode·动态规划
cui_ruicheng1 小时前
Python从入门到实战(六):非序列容器
开发语言·python
SamDeepThinking1 小时前
组合还是继承?我在项目里主要看这两个判断
java·后端·面试
可编程芯片开发1 小时前
空气流量和空气压力参数解耦系统simulink建模与仿真
算法
wear工程师1 小时前
setState 到底是不是异步的?这题从 React 16 问到 18,标准答案早就变了
react.js·面试
_Doubletful1 小时前
妙用位运算:解构汉明距离至100%(提供分析与多解)
c语言·算法·leetcode