《高级编程技术》作业[12]——LeetCode三道Array题目选做(2) : 66. Plus One

一.题目内容

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.把最低位(个位)的数字加一(这时该数字可能大于9)

    2.从倒数第二位开始,检查它临近的低位数字大于9(是否有进位)。如果有进位,则低位数字按10取膜,高位数字加1。

    3.如果最高为数字大于9,则按10取膜,然后在数组首部插入1。


三.代码实现

class Solution(object):
    def plusOne(self, digits):
        digits[-1] += 1
        for i in reversed(range(len(digits)-1)):
            digits[i] += digits[i+1] / 10
            digits[i+1] %= 10
        if digits[0] / 10:
            digits[0] %= 10
            digits.insert(0, 1)
        return digits

你可能感兴趣的:(《高级编程技术》作业[12]——LeetCode三道Array题目选做(2) : 66. Plus One)