LeetCode 66. Plus One
Description
Given a non-empty array of digits representing a non-negative integer, plus one to the integer.
The digits are stored such that the most significant digit is at the head of the list, and each element in the array contain a single digit.
You may assume the integer does not contain any leading zero, except the number 0 itself.
Example 1:
Input: [1,2,3]
Output: [1,2,4]
Explanation: The array represents the integer 123.
Example 2:
Input: [4,3,2,1]
Output: [4,3,2,2]
Explanation: The array represents the integer 4321.
描述
给定表示非负整数的非空数字数组,加上整数的1。
存储数字使得最高有效数字位于列表的开头,并且数组中的每个元素包含单个数字。
您可以假设整数不包含任何前导零,除了数字0本身。
思路
- 此题目是给定一个数字,每一位都是数组中的一个元素,要求在末尾加一,然后返回结果.
- 此题目主要注意进位的问题,是普通的加法运算,思路清晰,比较简单,python3代码如下.
class Solution:
def plusOne(self, digits):
"""
:type digits: List[int]
:rtype: List[int]
"""
# 结果数组
res = []
# 数组最后一个元素的索引
index = len(digits)-1
# 获取最后一个元素的值
last = digits[index]
# 当需要进位的时候才进行循环
while last+1 == 10:
# 需要进位,在首位插入0
res.insert(0, 0)
# index指向数组的前一个元素
index -= 1
# 如果index越界,重新赋值为0,即重新指向首位置
if index == -1:
index += 1
# 在输入数组的首位插入0占位
digits.insert(0, 0)
# last继续指向输入数组的末尾位置,此时index已经自减一次
last = digits[index]
digits[index] += 1
# 将res和digits数组中的元素合并
res = digits[:index+1]+res
return res