给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 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]
提示:
1 <= digits.length <= 100
0 <= digits[i] <= 9
法一、
class Solution(object):
def plusOne(self, digits):
"""
:type digits: List[int]
:rtype: List[int]
"""
for i in range(len(digits)-1,-1,-1):
if digits[i]!=9:
digits[i]+=1
return digits
else:
digits[i]=0
digits.insert(0,1)
return digits
注意
一个Python函数只会执行一次 return 语句,并返回相应的值或表达式。当函数执行遇到 return 语句时,就会立即退出函数,不再执行后续代码或语句。
需要注意的是,在函数体内可以包含多个return语句,但是只有第一个执行到的 return 语句会生效并返回其相应的值,如果函数中的条件满足多个 return 语句,则程序将只会执行第一个符合条件的 return 语句,而忽略后续的所有 return 语句。
chatgpt生成的代码解释
这段代码是Python语言的一个类中的函数定义,实现将给定整数数组加1的功能。具体解释如下:
-
定义了一个名为Solution的类,并在其中声明了一个名为plusOne的函数,该函数需要传入一个整数列表digits,并返回一个整数列表。
-
在函数内部,使用for语句和range()函数构建倒序遍历列表digits的循环,从最后一个元素开始依次判断取值。
-
如果当前元素不等于9,则直接将其加1并返回digits即可。
-
如果当前元素等于9,则将其设置为0。
-
继续循环,如果整个列表都只有9,则在列表首部插入1,以满足进位需求。
-
最后返回digits作为函数的返回值。
需要注意的是,由于这个算法只涉及加1操作,因此对于更高位到10的进位处理没有包含在内。同时,在原始数组digits被修改后不会再还原,容易导致数字转换域出现错误,因此还需要根据实际应用场景进行适当的优化和改写。
法二、list->str->int->str->list
class Solution(object):
def plusOne(self, digits):
"""
:type digits: List[int]
:rtype: List[int]
"""
res=""
for i in digits:
res +=str(i)
a=str(int(res)+1)
return [int(i) for i in a]
这段代码是Python语言的一个类中的函数定义,实现将给定整数数组加1的功能。具体解释如下:
-
定义了一个名为Solution的类,并在其中声明了一个名为plusOne的函数,该函数需要传入一个整数列表digits,并返回一个整数列表。
-
在函数内部,首先声明一个空字符串变量res。
-
循环遍历数字列表digits中的每个元素i,并将其转化为字符串类型,将其添加到字符串变量res的末尾,逐渐构建一个与原列表digits对应的字符串。
-
将经过拼接得到的字符串res转化为整型数值,加1后再使用str()函数将其转换回字符串。这一步实现了对给定数字进行加1操作。
-
使用列表推导式,依次取出字符串a中每个字符,把其转成int类型并存储到一个新的整数列表中,最终输出作为该函数的返回值。
需要注意的是,由于这种算法采用字符串转数值、数值转字符串、字符串切割等较多的操作,相比于整型加1的方式来说时间复杂度稍大,但在处理数据范围较小时能够满足要求,同时也更加通用。