66. 加一

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

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

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

  • 示例 1:

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

  • 示例 2:

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

  • 分析:

此题主要考察对于一串数字123, 如何实现给其个位数加一

  1. 可以将数字看做一串字符串,每次遍历,就将字符串拼接起来,最后转换字符串格式为整形并加一,再次遍历字符串,实现题目要求
  2. 遍历列表,首先获取其个位数的数值,若个位数的值小于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
posted @ 2019-05-02 19:49  AimeeGao  阅读(157)  评论(0编辑  收藏  举报