力扣算法题:加一

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

最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
来源:力扣(LeetCode)

我的解题思路:考虑到数组的长度,非空数组最少也有一个元素,数组中会有一个元素、有两个元素、有三个元素,甚至有更多的元素,当然有一个元素的时候非常好处理,直接判断元素是否是9然后再处理即可,因为只有元素是9时加了1之后会变成10,而数组只能存储单个数字,所以要对元素为9时做进一步处理,元素不是9时,元素直接加1即可。我选择使用的是while循环,-1是数组最后一个元素的下标,也是起始下标,n是数组的长度,由于此题是倒着处理元素,所以从-1开始,i就是目标数组的各元素下标,必须要大于等于数组长度的负数,首先第一个if判断如果最后一个元素➕1的结果是10,先将最后一个元素的值赋值为0,在此基础上再次判断如果i的值等于-n,那么此时就在数组索引为i-1的位置上插入数值1,如果i!=-n时会i-1后再次进入循环,再进行根据此时i的值继续做判断,直至退出循环,这样的处理会满足以下数组如[9],[9,9],[9,9,9]等等,其次当上一个最外层if判断的条件不满足时,进入下一个判断条件,其实就是当元素不是9时的处理,当元素不是9时,加上1之后,就退出while循环,返回新的数组即可,如目标数组为[8,0,9,9],[1,2,3],[4,3,2,1],[8,9,0,9]等等

class Solution:
    def plusOne(self, digits: List[int]) -> List[int]:
        n=len(digits)
        i=-1
        while i >= -n:
            if  digits[i]+1 == 10:
                digits[i]=0
                if i==-n:
                    digits.insert(i-1,1)
            else:
                digits[i]=digits[i]+1
                break
            i-=1                 
        return digits

代码性能:
请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值