html5网站代码,dw网页制作在线编辑,唯品会的网站建设,寻找网站设计与制作Problem: 66. 加一 思路 给定一个由 整数 组成的 非空 数组所表示的非负整数#xff0c;在该数的基础上加一。 最高位数字存放在数组的首位#xff0c; 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外#xff0c;这个整数不会以零开头。 示例 1#xff1a;
输… Problem: 66. 加一 思路 给定一个由 整数 组成的 非空 数组所表示的非负整数在该数的基础上加一。 最高位数字存放在数组的首位 数组中每个元素只存储单个数字。 你可以假设除了整数 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 1000 digits[i] 9
解题方法 对表示数字的数组进行加一操作。如果数组最后一位不是9则直接加一如果是9则需要连续进位。如果所有位都是9则在数组最前面插入1。 复杂度
时间复杂度O(n) 这里的 n 是输入数组 digits 的长度。 在最坏的情况下即数组中的每个元素都是9我们需要遍历整个数组来将所有的9变成0并在数组的开头插入一个1。所以时间复杂度是线性的即 O(n)。 空间复杂度O(1) 我们没有使用与输入数组长度成比例的额外空间。操作是在输入数组上直接进行的除了在所有数字都是9且需要在数组前面添加一个新的1的情况下。 在那种特殊情况下我们创建了一个新的数组这个数组比输入数组多一个元素但是这并不影响空间复杂度的常数阶因此空间复杂度依然是 O(1)。 代码
class Solution(object):def plusOne(self, digits):# 从数组末尾开始向前遍历for i in range(len(digits) - 1, -1 ,-1):if digits[i] 9:digits[i] 1 # 如果该位小于9直接加1后返回数组return digitsdigits [i] 0 # 如果该位等于9置为0并继续循环# 如果所有位都是9需要在数组最前面插入1return[1] digitsclass Solution(object):def plusOne(self, digits):for i in range(len(digits)-1,-1,-1):if digits[i] !9:digits[i] 1return digitselse:digits[i] 0digits.insert(0,1)return digits