每日刷题-- 66. 加一

104 阅读1分钟

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
}