《高级编程技术》作业[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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值