「这是我参与11月更文挑战的第6天,活动详情查看:2021最后一次更文挑战」
前言
一个程序,有一种书本上的描述:解决一个问题除了要有一个数据结构来表示和组织信息外,还需要一系列步骤来完成问题的解决方案。
当然了,第一个逗号前面的那当然就是数据结构了,那后面的一系列步骤其实说的就是算法。
也可以称为:操作数据结构的方法;或者称为:解决问题的方案。
我学算法的目的
因为我想在找工作的时候更有竞争力,更有话语权,所以我来学算法!
一、题目描述
题目描述:给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 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]
提示: 1 <= digits.length <= 100 0 <= digits[i] <= 9
来源:力扣(LeetCode) 链接:leetcode-cn.com/problems/pl… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
二、题目解析
第一思路:
一个整数数组,表示一个整数 通过遍历数组的方法将数组累加为整数再加一 结果:运行超时
第二思路:
从后遍历数组,判断每个元素 如果小于9,就让最后元素+1并返回数组 如果=9,+1的话会变成10 那么让9变成0 前一个元素在下一个循环的时候会处理 如果循环正常,说明数组元素全为9 那么新建一个数组,长度为原数组长度+1,令第一个元素为1 其他元素默认为0
需要注意的是,数组题需要判断当数组为空,数组长度为1的时候的特殊情况
三、代码
python
class Solution:
def plusOne(self, digits: List[int]) -> List[int]:
n=len(digits)
m=n
if not digits: return None
if n==1 and digits[0]!=9:
digits[0]+=1
return digits
while n-1>=0:
if digits[n-1]!=9:
digits[n-1]+=1
return digits
else: digits[n-1]=0
n-=1
digits=[0]*(m+1)
print(digits)
digits[0]=1
print(digits)
return digits
结语
算法的出现也是因为有了问题,之前也说过算法是什么了,就是一个问题的解决方案,所以我们的算法是为了解决问题才出现的。
当然,主要还是为了money,刷算法,冲大厂,加油。
成功不难,就在于你是否会比别人更会吃苦。