66、加一(python)

题目:

  • 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一
  • 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字
  • 你可以假设除了整数 0 之外,这个整数不会以零开头。

例如:

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

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

思路:

我们可以分为三种情况:

  • 输入的数最后一位不是9: 直接最后一位加一,例:输入123;输出124,末尾直接加一
  • 输入的数最后一位是9(但数字不全是9): 从数组的右边向左遍历,遇到9就令该位为0,直到遇到的不为9,例:输入109;输出110,输入的数字中最左边的数字是9,这是令该位为0,再右移一位,不是9则加一,然后跳出循环,输出为:110
  • 输入的数全是9:例:输入99,输出:100,和上面开始一样,从右边开始遍历,遇到9就将其变为0,这是数字变为00,我们再末尾加0,再令首位为1,变为100

详细代码:

class Solution:
    def plusOne(self, digits: List[int]) -> List[int]:
        lenlist = len(digits)                # 定义数组的长度

        while lenlist:                        # 循环遍历:
            if digits[lenlist-1] == 9:            #若数组的最后一位是9,则将其变为0   (情况2)
                digits[lenlist-1] = 0
            else:                                      	   # 最后一位不是9
                digits[lenlist-1] += 1            # 则最后一位加一,并跳出循环  (情况1、2)
                break       
            lenlist -= 1
            
        if digits[0] == 0:                     # 如果首位是0,则为情况3
            digits.append(0)             # 末尾加0,并令首位为1
            digits[0] = 1
        return digits
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值