1, 题目

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。

示例 1:

  1. 输入: [1,2,3]
  2. 输出: [1,2,4]
  3. 解释: 输入数组表示数字 123

示例 2:

  1. 输入: [4,3,2,1]
  2. 输出: [4,3,2,2]
  3. 解释: 输入数组表示数字 4321

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/plus-one
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2, 算法

  1. #scala
  2. object Solution {
  3. def plusOne(digits: Array[Int]): Array[Int] = {
  4. val buffer = scala.collection.mutable.Stack[Int]()
  5. var carry = 1
  6. var sum = 0
  7. for (x <- digits.reverse) {
  8. sum = carry + x
  9. buffer.push(sum % 10)
  10. carry = sum / 10
  11. }
  12. if (carry == 1) {
  13. buffer.push(1)
  14. }
  15. buffer.toArray
  16. }
  17. }
  1. #python
  2. class Solution:
  3. def plusOne(self, digits: List[int]) -> List[int]:
  4. carry = 1
  5. result = []
  6. for x in reversed(digits):
  7. sum = carry + x
  8. result.append(sum % 10)
  9. carry = sum // 10
  10. if carry:
  11. result.append(1)
  12. return list(reversed(result))