0%

LeetCode.加一

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

  • 示例 1:
    输入:digits = [1,2,3]
    输出:[1,2,4]
  • 示例 2:
    输入:digits = [4,3,2,1]
    输出:[4,3,2,2]
  • 示例 3:
    输入:digits = [0]
    输出:[1]
  1. 提示:
    1 <= digits.length <= 100
    0 <= digits[i] <= 9

解法:

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
object PlusOne {
def main(args: Array[String]): Unit = {
println(plusOne(Array(0)).mkString(","))
println(plusOne(Array(1)).mkString(","))
println(plusOne(Array(9)).mkString(","))
println(plusOne(Array(1, 2, 3)).mkString(","))
println(plusOne(Array(9, 9, 9)).mkString(","))
}

def plusOne(digits: Array[Int]): Array[Int] = {
var cur = 1
for (i <- digits.length - 1 to 0 by -1) {
val tmp = digits(i)
digits(i) = (cur + tmp) % 10
cur = (cur + tmp) / 10
}

if(cur == 1){
val res = new Array[Int](digits.length + 1)
res(0) = 1
for(i <- 0 until digits.length){
res(i+1) = digits(i)
}
res
}else{
digits
}
}
}