给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
解题思路: 从后往前判断, 最后一位加1是否等于10,是否需要进1,如果需要进1,倒数第二位也需要加1,以此类推.
特别注意:当第一位需要进1,数组的长度需要增加1
// 执行用时: 24 ms
func plusOne(_ digits: [Int]) -> [Int] {
// 存储新数据的数组
var number: [Int] = []
// 原数组长度
let length = digits.count
// 是否进1
var add = 1
for item in 0..<length{
// 从后往前判断
if digits[(length - 1) - item] + add == 10 {//需要进1
// 需要进1,当前位置为0
number.insert(0, at: 0)
add = 1
// 当判断为原数组的第一位,q并且需要进1时,
if item == length - 1 {
number.insert(1, at: 0)
}
} else {// 不需要进1
number.insert(digits[(length - 1) - item] + add, at: 0)
add = 0
}
}
return number
}