[ LeetCode ] 题刷刷(Python)-第66题:加一

server/2024/12/22 2:28:59/

题目描述

给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。

你可以假设除了整数 0 之外,这个整数不会以零开头。

示例

示例 1:

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

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

输入:digits = [0]
输出:[1]

解题

解法一: 逆序遍历并逐位处理进位

思路

初始化进位标志:定义变量 carry 并赋值为 1

逆序遍历数组:加一操作可能导致低位向高位的进位,从低位开始处理有利于逐步解决进位问题。

逐位加一并处理进位: 计算当前位的新值:将当前数字 digits[i] 与进位值 carry 相加,得到临时变量 temp。然后将 temp 除以 10 的余数赋值给当前数字,然后更新进位值 carry。记录当前位加一后可能产生的进位值,供下一次迭代使用。 最后检查 carry 是否为 0。若为 0,说明没有更高位需要进位,此时终止循环。

遍历结束后,检查 carry 的值。如果大于 0,说明最高位也发生了进位。此时在数组最前面插入一个新的元素,其值为 carry。

算法复杂度

时间复杂度:O(⁡n),其中 n为数组的长度。


空间复杂度:O(1)。

代码

python">class Solution:def plusOne(self, digits: List[int]) -> List[int]:# 从数组末尾开始遍历carry = 1  # 初始化进位标志for i in range(len(digits) - 1, -1, -1):# 尝试加一并处理进位temp = digits[i] + carrydigits[i] = temp % 10  # 更新当前位的值carry = temp // 10  # 计算新的进位值if carry == 0:  # 如果没有进位,结束循环break# 如果最高位也发生了进位,需要在数组前添加一个新元素if carry > 0:digits.insert(0, carry)return digits

http://www.ppmy.cn/server/22983.html

相关文章

AI电销机器人系统源码部署之:freeswitch安装Linux

安装 FreeSWITCH(一个开源的电话交换系统)通常需要一些步骤,以下是在 Linux 系统上安装 FreeSWITCH 的基本指南: 准备工作: 确保你有一个运行 Linux 的服务器,并且有 root 或者具有 sudo 权限的用户。确保服…

使用R语言进行简单的因子分析

在本文中,将介绍如何使用R语言进行因子分析,并通过一个示例演示整个过程。因子分析是一种多元统计分析方法,用于探索变量之间的潜在结构和关系。R语言提供了丰富的统计工具和包,使因子分析的实现变得简单而高效。 准备工作 首先…

传感器在机械自动化中的应用有哪些?

传感器在机械自动化领域扮演了非常关键的角色,它们是实现高效和精准控制的基础。传感器可以检测和测量机械系统中的各种物理量,如位置、速度、温度、压力等,并将这些物理量转换成电信号,以便控制系统能够进行分析和响应。以下是一…

蓝桥杯ctf2024 部分wp

数据分析 1. packet 密码破解 1. cc 逆向分析 1. 欢乐时光 XXTEA #include<stdio.h> #include<stdint.h> #define DELTA 0x9e3779b9 #define MX (((z>>5^y<<2)(y>>3^z<<4))^((sum^y)(key[(p&3)^e]^z))) void btea(unsigned int* v…

JetBrains GoLand v2024.1 激活版 (Go语言集成开发IDE)

前言 JetBrains GoLand是一款专门为Go语言开发人员构建的跨平台的集成开发环境。动态错误检测和修复建议、快速安全重构、智能代码完成、无效代码检测和文档提示可以帮助新手和有经验的Go开发人员高效地创建可靠的代码。GoLand还支持JavaScript&#xff0c;TypeScript&#xf…

用vue3实现留言板功能

效果图&#xff1a; 代码&#xff1a; <script setup lang"ts"> import { ref } from vue;interface Message {name: string;phone: string;message: string; }const name ref<string>(); const phone ref<string>(); const message ref<st…

德思特手持式频谱分析仪加速公共无线事业的运行

一、公共无线事业中无线电的重要性 提起无线电&#xff0c;许多人或许觉得这是非常老旧的观念。实际上&#xff0c;无线电在我们的生活中占据着非常重要的地位。当前&#xff0c;无线电早已成为受众最广泛的大众媒介。据工业和信息化部资料显示&#xff0c;全球95%的人口都可以…

FreeRTOS之列表

1.FreeRTOS的列表和列表项十分重要。列表类相当于链表&#xff0c;列表项则相当于链表中的节点。列表项的地址是非连续的&#xff0c;列表项的数量可随时修改。在OS中的任务状态和数量会发生改变&#xff0c;因此使用列表可以很好的满足需求。 列表和列表项的相关定义与操作函…