LeetCode之加一-Swift

栏目: Swift · 发布时间: 7年前

内容简介:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。每个元素的和若为10,则向前进一位,若数组中index=0的元素为0,则说明最高位进位1,在数组头部insert一个元素1(例如:数组[9,9,9],则进位成[1,0,0,0])

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。

示例

示例 1:
输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。

示例 2:
输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。
复制代码

答案

每个元素的和若为10,则向前进一位,若数组中index=0的元素为0,则说明最高位进位1,在数组头部insert一个元素1(例如:数组[9,9,9],则进位成[1,0,0,0])

代码如下:

func plusOne(_ digits: [Int]) -> [Int] {
        var result = digits
        var carry = 1

        for idx in result.indices {
            let newIdx = digits.count - 1 - idx
            let sum = digits[newIdx] + carry
            if sum == 10 {
                carry = 1
                result[newIdx] = 0
            } else {
                carry = 0
                result[newIdx] = sum
            }
        }
        if result.first == 0 {
            result.insert(1, at: 0)
        }
        return result
    }
复制代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数学世纪

数学世纪

皮耶尔乔治·奥迪弗雷迪 / 胡作玄、胡俊美、于金青 / 上海科学技术出版社 / 2012-1 / 28.00元

《数学世纪:过去100年间30个重大问题》以简短可读的方式论述了整个20世纪的数学。20世纪的数学博大精深,新兴领域及学科的建立发展,许多经典问题得到解决,大量新的有意义的问题的引入,为数学带来了活力。《数学世纪:过去100年间30个重大问题》介绍了数学基础,20世纪的纯粹数学、应用和计算数学,以及目前未解的重要问题,中间穿插了希尔伯特的23个问题的解决情况、菲尔兹奖和沃尔夫奖得主的工作成就等。一起来看看 《数学世纪》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试