加一
定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。
示例 2:
输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。
执行用时 :48 ms, 在所有 Python3 提交中击败了81.01% 的用户
内存消耗 :13.8 MB, 在所有 Python3 提交中击败了5.64%的用户
class Solution:
def plusOne(self, digits: List[int]) -> List[int]:
#有两种情况,第一种,末尾不是9,最后一项直接加一,(digits[-1]+=1)返回digits
if 0<=digits[-1]<9:
digits[-1]+=1
return digits
#第二种情况,末尾是9
else:
#遍历digits,从后往前
for i in range(len(digits)-1,-1,-1):
#出现第一个不为9的数直接加一,循环结束,不再和9比较,返回digits
if digits[i]!=9:
digits[i]+=1
return digits
#将i和i后面的所有都为0
j=i
while j<=len(digits)-1:
digits[j] = 0
j+=1
#当出现9,99,999等等这种情况时
digits[0] = 1
digits.append(0)
return digits
在本地运行,需要在最后添加(if前面没有任何空格)
if __name__=='__main__':
a=Solution()
b=a.plusOne([1,1,1,9])
c=a.plusOne([9])
d=a.plusOne([9,9])
e=a.plusOne([9,9,9])
f=a.plusOne([1,1,1,1])
print(b,c,d,e,f)
算法题目来自: https://leetcode-cn.com/problems/plus-one/