给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
- 示例 1:
输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。
- 示例 2:
输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。
- 分析:
此题主要考察对于一串数字123, 如何实现给其个位数加一
- 可以将数字看做一串字符串,每次遍历,就将字符串拼接起来,最后转换字符串格式为整形并加一,再次遍历字符串,实现题目要求
- 遍历列表,首先获取其个位数的数值,若个位数的值小于9, 则将个位数的值加一,若个位数的值=9, 则将个位数的值赋值为0, 并将十位数的值加1, 以此类推。 对于只有一个个位数的列表,则直接将个位数置0, 并将十位数由0变1
- 解法1:
class Solution(object):
def plusOne(self, digits):
"""
:type digits: List[int]
:rtype: List[int]
"""
tmp = ""
for i, num in enumerate(digits):
tmp = tmp + str(num)
num = str(int(tmp) + 1)
return [int(digit) for digit in num]
- 解法2:
class Solution(object):
def plusOne(self, digits):
"""
:type digits: List[int]
:rtype: List[int]
"""
tmp_list = []
for index, num in enumerate(digits):
tmp_list.append(str(num))
total_num = ''.join(tmp_list)
total_num = str(int(total_num) + 1)
return [int(d) for d in total_num]
- 解法3:
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
digits[i] = 0
str = [0] * (len(digits) + 1)
str[0] = 1
return str