数组基础-加一

题目

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

分析

这个问题可以归类为基础的数组操作问题。我们需要对数组中的每个元素进行逐位处理,模拟加法的过程。具体步骤如下:
1、从数组的最后一位开始,逐位向前处理。
2、如果当前位加一后的结果小于10,则直接返回结果数组。
3、如果当前位加一后的结果等于10,则将当前位设为0,并继续处理前一位。
4、如果所有位都处理完毕后仍有进位(即首位也变为0),则在数组最前面添加一个1。

下面是详细的实现步骤和代码示例:

实现步骤

初始化一个从数组最后一位开始的循环。
在循环中对当前位加一,并检查是否需要进位。
如果不需要进位,直接返回结果数组。
如果需要进位,将当前位设为0,并继续处理前一位。
如果所有位都处理完毕后仍有进位,则在数组最前面添加一个1。

代码示例

def plusOne(self, digits: List[int]) -> List[int]:
	"""
	 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一
	 :params digits: List            - 表示非负整数的数组
	 :return List                    - 加一后的数组
	 """
	
	 n = len(digits)
	 for i in range(n-1, -1, -1):
	     if digits[i] < 9:
	         digits[i] += 1
	         return digits
	     digits[i] = 0
	 return [1] + digits

解释

初始化循环:从数组的最后一位开始,逐位向前处理。
处理当前位:对当前位加一,并检查是否需要进位。如果没有进位,直接返回结果数组。
处理进位:如果有进位,将当前位设为0,并继续处理前一位。
处理所有位:如果所有位都处理完毕后仍有进位,在数组最前面添加一个1。

知识点总结

数组的遍历和索引操作。
模拟加法的进位处理。
列表的插入操作。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

油头Y7

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值