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

相关推荐
weixin199701080165 分钟前
《淘宝TOP API:落地方案、接口边界与业务踩坑 —— 聚石塔内外价差 10 倍的真相》(附 Python 源码)
开发语言·python
梦想的颜色9 分钟前
【编程实战】AI 时代 APP 开发全栈硬核指南:技术选型 + AI 架构 + 模型落地全维度决策
python·flutter·react native·react.js·ai·桌面应用·milvus
ForeverYang201514 分钟前
一种无需训练缺陷数据生成算法--O2MAG
人工智能·深度学习·算法
Pniubi18 分钟前
Agent开发:记忆系统中向量存储的合理安排
职场和发展
Madison-No732 分钟前
多语言聊天大模型--测试报告
linux·git·python·selenium·jmeter·自动化·postman
鲲鹏ai37 分钟前
盈启鲲鹏数字人招商政策
大数据·人工智能·python
荣码1 小时前
从0到1搭一个生产级RAG系统:串联前面21篇所有知识
java·python
xuxigifxfh1 小时前
牛客:HJ170 01序列
java·开发语言·算法·华为机考
Zelman1 小时前
测试层级与测试类型
后端·面试·测试
朝朝辞暮i1 小时前
C++ 第 33 课:事件循环——spin() 到底在干什么
开发语言·c++·算法