leetcode66 Plus One
1 """ 2 Given a non-empty array of digits representing a non-negative integer, plus one to the integer. 3 The digits are stored such that the most significant digit is at the head of the list, and each element in the array contain a single digit. 4 You may assume the integer does not contain any leading zero, except the number 0 itself. 5 Example 1: 6 Input: [1,2,3] 7 Output: [1,2,4] 8 Explanation: The array represents the integer 123. 9 Example 2: 10 Input: [4,3,2,1] 11 Output: [4,3,2,2] 12 Explanation: The array represents the integer 4321. 13 """ 14 """ 15 解法一:从后向前迭代。当迭代到最高位时如果要进位 16 需要再次判断,运用了insert(a, b)函数。表示在位置a前插入b元素 17 """ 18 class Solution1: 19 def plusOne(self, digits): 20 carry = 0 21 digits[len(digits)-1] += 1 22 for i in range(len(digits)-1, -1, -1): 23 if digits[i]+carry == 10: 24 digits[i] = 0 25 carry = 1 26 if i == 0: 27 digits.insert(i, 1) 28 else: 29 digits[i] += carry 30 carry = 0 31 return digits 32 """ 33 解法二:递归 34 """ 35 class Solution2: 36 def plusOne(self, digits): 37 if len(digits) == 1 and digits[0] == 9: 38 return [1, 0] 39 if digits[-1] != 9: 40 digits[-1] += 1 41 return digits 42 else: 43 digits[-1] = 0 44 digits[:-1] = self.plusOne(digits[:-1]) 45 return digits