美文网首页swift
swift 解算法:加一

swift 解算法:加一

作者: Eddy_0 | 来源:发表于2019-02-25 13:41 被阅读5次

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
你可以假设除了整数 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
    }

相关文章

网友评论

    本文标题:swift 解算法:加一

    本文链接:https://www.haomeiwen.com/subject/peawyqtx.html