问题描述:
给定一个非负整数组成的非空数组,在该数的基础上加一,返回一个新的数组。
最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
输入: [1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字 123。
示例 2:
输入: [4,3,2,1] 输出: [4,3,2,2] 解释: 输入数组表示数字 4321。
方法1:
1 class Solution(object): 2 def plusOne(self, digits): 3 """ 4 :type digits: List[int] 5 :rtype: List[int] 6 """ 7 if digits[-1] +1 < 10:#最后一位+1 < 10 的情况 8 digits[-1] += 1 9 return digits 10 else:#=10的情况 11 digits.reverse()#反转,无返回值 12 digits[0] += 1 13 for i in range(len(digits)): 14 if digits[i] == 10: 15 digits[i] = 0 16 if i + 1 != len(digits): 17 digits[i+1] += 1 18 else: 19 digits[-1] = 0 20 digits.append(1) 21 else: 22 digits.reverse() 23 return digits 24 # if digits[-1] == 10: 25 # digits[-1] = 0 26 # digits.append(1) 27 digits.reverse() 28 return digits
方法2:
1 class Solution(object): 2 def plusOne(self, digits): 3 """ 4 :type digits: List[int] 5 :rtype: List[int] 6 """ 7 if digits is None: 8 return 9 10 length = len(digits) 11 for i in range(length - 1, -1, -1): 12 if digits[i] != 9: 13 digits[i] += 1 14 return digits 15 else: 16 digits[i] = 0 17 digits.insert(0, 1) 18 return digits
注:
1.for i in range(始,末,步长):
末取不到.
2.Python包含以下函数:
序号 | 函数 |
---|---|
1 | cmp(list1, list2) 比较两个列表的元素 |
2 | len(list) 列表元素个数 |
3 | max(list) 返回列表元素最大值 |
4 | min(list) 返回列表元素最小值 |
5 | list(seq) 将元组转换为列表 |
3.Python包含以下方法:
序号 | 方法 |
---|---|
1 | list.append(obj) 在列表末尾添加新的对象 |
2 | list.count(obj) 统计某个元素在列表中出现的次数 |
3 | list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) |
4 | list.index(obj) 从列表中找出某个值第一个匹配项的索引位置 |
5 | list.insert(index, obj) 将对象插入列表 |
6 | list.pop([index=-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 |
7 | list.remove(obj) 移除列表中某个值的第一个匹配项 |
8 | list.reverse() 反向列表中元素 |
9 | list.sort(cmp=None, key=None, reverse=False) 对原列表进行排序 |
2018-07-24 18:54:34