赞
踩
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 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]
提示:
大多数编程语言中,循环语句通常包括for、while、do-while等类型,开发人员需要根据实际需求选择不同的循环结构来完成特定任务。在Python中,循环只有for和while两种形式。
- class Solution:
- def plusOne(self, digits: List[int]) -> List[int]:
- a = len(digits)#数组的长度
- for i in range(a-1,-1,-1): #循环
- if digits[i]!=9:
- digits[i] += 1
- for j in range(i+1,a,1):
- digits[j] = 0
- return digits
- return [1] + [0] * a
大家可以试着理解下每行代码的意思,把代码学会了,再上高度,学算法~本次题目的难度较低,看下下面的题解吧~
当我们对数组(可以暂且理解为有顺序的集合,一个萝卜一个坑,之后我们会详细讲述下)加1时,会发现只有出现9的时候会出现进位,其他数字就是简简单单+1即可。我们可以考虑如下的三种情况:
①如果数组的末尾没有“9”,例如 [1,2,3],那么我们直接将末尾的数加1,得到 [1,2,4] 并返回;
②如果数组的末尾有若干个“9”,例如 [1,2,9,9][1,2,3,9,9],那么我们只需要找出从末尾开始的第一个不为 9 的元素,将该元素加1,得到 [1,3,9,9][1,2,4,9,9]。随后将末尾的9全部置零,得到 [1,3,0,0][1,2,4,0,0] 并返回;
③如果数组的所有元素都是9,例如 [9,9,9,9,9],那么答案为[1,0,0,0,0,0]。我们只需要构造一个长度比 多 1的新数组,将首元素置为1,其余元素置为0即可。
因此对数组进行一次逆序遍历,找出第一个不为9的元素,将其加一并将后续所有元素置零即可。如果所有的元素均为9,那么需要返回一个新的数组。在题解中的代码,我们发现了一个新功能:循环,也就是遍历的工具,接下来我们详细讲述一下。
先讲下啥是遍历,顾名思义,一遍一遍去经历,通俗来讲,就是机械地访问每一个对象。官方解释:循环可以用来取出列表中的元素,其原理其实就是根据索引自增的方式来一次进行列表中元素的取值,不仅仅是列表,包括字符串、字典、元组等序列都是可以通过循环来进行元素取值,这个过程称为遍历。
- i = 0
- lst = ['a', 'b', 'c', 'd']
-
- while i < 4:
-
- print(lst[i])
-
- i += 1
-
- print("循环结束")
注意循环条件的范围不要超出列表本身长度,不然会报错,IndexError: list index out of range。
for循环主要是用于迭代序列(列表、元组、字典等)
通过for...in...格式能够遍历如序列中的每一个元素,结构如下:
- lst = [1, 2, 3, 3]
- for i in lst:
- print(i)
如果要通过for循环来制定任意循环次数的话通常是通过range()函数来实现。
range()是Python中一个内置的函数,它用于创建一个指定范围内连续的数字序列。range()函数有3个参数,起始位置start、终止位置stop和步长step,分别表示数字序列的起始位置、结束位置和连续数字之间的跨度。
range(start,stop,step) #stop不包含在内,左闭右开
range()函数需要至少传入一个参数(stop参数),如果只传入stop参数,则默认以0作为起始位置,步长为1。若还传入start参数,则以start为起始位置,步长为1。如果还传入step参数,则步长值为step。range()函数返回值是一个可迭代对象,可以通过循环或转换为列表等方式进行访问。注!传入stop值本身不被访问,可以这样记start闭,stop开。
有时候在循环中需要提前终止循环,例如需要找出列表中第一个值为3的元素,找到后进行输出然后终止循环,那么这个思路最关键的就是在循环体中需要判断列表元素是否等于3,如果等于的话就可以终止循环而不再进行之后的循环操作,这个需求就可以通过break语句来实现,代码如下:
- a = [0,1,2,3,4,5]
- for i in range(5,-1,-1):
- if a[i]==2:
- break
- else:
- print(a[i])
与break语句不同的是,continue语句是用于跳过本次循环,如下:
- a = [0,1,2,3,4,5]
- for i in range(5,-1,-1):
- if a[i]==2:
- continue
- else:
- print(a[i])
在 Python 中,嵌套循环是由多个循环结构嵌套组成的循环结构。嵌套循环可以用于对多维数据结构(如二维列表)进行遍历、查找和操作的过程中。
在嵌套循环中,外层循环用于控制内层循环的执行次数。具体实现方式可以使用 for 循环嵌套,也可以使用 while 循环嵌套。我们本道题就采取了嵌套循环,
- # 嵌套循环遍历二维列表
- a = [["元宵节","快乐", "!"], ["吃汤圆","了吗", "?"], ["祝你","天天开心", "!"]]
- for i in a: # 外层循环
- for j in i: # 内层循环
- print(j,end = " ")
- print()
今天就不唠叨啥啦,大家好好过节吧,元宵节快乐~不过这个点,大家应该都玩差不多了吧,年过完了,大家收收心哈~一起加油,奔向更光明的未来!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。