简单的数组操作问题,注意好 9+1
进位的情况即可。
题目
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例
示例 1:
解释: 输入数组表示数字 123。
示例 2:
| 输入: [4,3,2,1] 输出: [4,3,2,2]
|
解释: 输入数组表示数字 4321。
考察知识点
数组
核心思想
主要是要注意 9+1
产生的进位问题
Python版本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| class Solution: def plusOne(self, digits: List[int]) -> List[int]: if digits[-1] < 9: digits[-1] += 1 else: i = -1 while True: digits[i] = 0 if abs(i-1) <= len(digits): if digits[i-1] < 9: digits[i-1] += 1 break else: i = i - 1 else: digits.insert(0, 1) break
return digits
print("leet code accept!!!") Input = [[9,9], [9], [9, 9, 9], [6, 9, 9]] Input1 = [2, 3] Answer = [[1, 0, 0], [1, 0], [1, 0, 0, 0], [7, 0, 0]]
if __name__ == "__main__": solution = Solution() for i in range(len(Input)): print("-"*50) reslut = solution.plusOne(Input[i]) if reslut == Answer[i]: print(True) else: print(False) print(Input[i])
|
时间复杂度:\(O(n)\),当输入的n个数都是9时,就会循环n遍进行持续进位。
空间复杂度:\(O(1)\),没有使用额外的空间。
执行用时 :40 ms, 在所有 Python3 提交中击败了50%的用户
内存消耗 :13.6 MB, 在所有 Python3 提交中击败了5.06%的用户