66. 加一
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
这个题麻烦在一点,数字9,第一遍做题的时候就忽略了单独9 的存在,然后测试不通过, 1、先按照题目的示例
输入: digits = [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123
我们知道
输入: digits = [1,2,9]
输出: [1,3,0]
解释: 输入数组表示数字 130
这样我们直接可以想到,是数字是9,我们直接把9修改为0,上一位数字加1 就好,
var resultArr = digits
var i = 0
while i < resultArr.count {
let j = resultArr.count-1-i
let value = resultArr[j]
if value != 9 {
resultArr[j] = value + 1
break
} else {
resultArr[j] = 0
}
i = i + 1
}
针对单独数字9,我们要特殊处理,因为9 + 1 = 10,要输入 【1,0】才可以 所以我们要在数组的第0位插入一个1来 补足数组,最后完整的写法
func plusOne(_ digits: [Int]) -> [Int] {
var resultArr = digits
var i = 0
while i < resultArr.count {
let j = resultArr.count-1-i
let value = resultArr[j]
if value != 9 {
resultArr[j] = value + 1
break
} else {
resultArr[j] = 0
}
i = i + 1
}
if i == resultArr.count {
resultArr.insert(1, at: 0)
}
return resultArr
}