leetcode (算法)66.加一(python版)

需求

给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
输入:digits = [1,2,3]
输出:[1,2,4]
解释:输入数组表示数字 123。
示例 2:
输入:digits = [4,3,2,1]
输出:[4,3,2,2]
解释:输入数组表示数字 4321。
示例 3:
输入:digits = [0]
输出:[1]

代码

class Solution:
    # todo 方法一
    # 将原本列表中数字转化为字符串保存下来,再将字符串转化为整数,进行+1操作
    # 之后将操作后的数字转化为字符串进行便利,将便利结果追加到新的列表中
    def add_one(self,list_int):
        result=''
        result_list=[]
        for i in list_int:
            result+=str(i)
        # print(int(result))
        result=str(int(result)+1)
        # print(result)
        for i in result:
            result_list.append(int(i))
        return result_list

    # todo 方法二
    # 初始化一个进位变量 carry 为 1。
    # 从数组的最后一位开始,依次将当前位上的数字加上进位变量 carry。
    # 如果当前位的结果大于等于 10,则将进位变量 carry 设为 1,并将当前位的结果减去 10。
    # 如果当前位的结果小于 10,则将进位变量 carry 设为 0,并停止遍历。
    # 继续处理前一位,重复步骤 2-4,直到处理完所有位或进位变量 carry 变为 0。
    # 如果处理完所有位后,进位变量 carry 仍为 1,说明原数组的最高位有进位,需要在数组的头部插入一个 1。
    def plusOne(self,digits):
        carry = 1
        for i in range(len(digits) - 1, -1, -1):
            digits[i] += carry
            if digits[i] >= 10:
                digits[i] -= 10
                carry = 1
            else:
                carry = 0
                break
        if carry == 1:
            digits.insert(0, 1)
        return digits


if __name__ == '__main__':
    call=Solution()
    list_int=[1,2,3,4]
    digits=[1,2,3,9]
    print(call.add_one(list_int))
    print(call.plusOne(digits))

运行结果

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值