swift 解算法:加一

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
你可以假设除了整数 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
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 2. 实现 Singleton 3. 数组中重复的数字 4. 二维数组中的查找 5. 替换空格 6. 从尾到...
    Observer_____阅读 3,031评论 0 1
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,426评论 0 3
  • 苏苏不是画家阅读 206评论 0 2
  • 大一上学期结束了,一学期下来认为自己胖了不少,下定决心打算寒假每个晚上都外出跑步。在学校时听母亲说,自从我毕...
    樱草丶阅读 229评论 0 2
  • 我离开老房子也已经五年多了,我记得当年离开的时候是高三那年,父母说上学太辛苦,便租了一个离学校很近的房子,上...
    Traenengas阅读 213评论 0 2