首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Swift 加一 - LeetCode

Swift 加一 - LeetCode

作者头像
韦弦zhy
发布2018-09-11 12:48:03
5650
发布2018-09-11 12:48:03
举报
题目:加一
描述:
给定一个非负整数组成的非空数组,给整数加一。
可以假设整数不包含任何前导零,除了数字0本身。
最高位数字存放在列表的首位。

语文能力捉急啊,看了半天没看懂。。。然后去找了英文原题(我实在LeetCode中文网做的题),英文描述如下:

[LeetCode] Plus One 

Given a non-negative number represented as an array of digits, plus one to the number.

The digits are stored such that the most significant digit is at the head of the list.

好吧,第一句是:给定一个以数字数组表示的非负数,ok,我终于理解题意了???,意思是一个数组里面存放的元素可以看成一个非负整数,现在给这个整数去加一。

那我们需要做的是,去判断这个非负整数加一后需不需要进位,那就容易了。从数组末位开始加一,如果最后一位不是整数9那么直接加一返回数组,如果是整数9那就变成整数0。极端情况:所有数字都是整数9,那就都变成整数0了,所以需要在数组头部插入一个整数1。

代码如下:

class Solution {
    func plusOne(_ digits: [Int]) -> [Int] {
        if digits.isEmpty {
            return digits
        }
        
        //这里这样写的原因是,参数digits是let定义的不可变的哦
        var digits = digits
        
        for i in (0..<digits.count).reversed() {
            if digits[i] < 9 {
                digits[i] += 1
                return digits
            }
            digits[i] = 0
        }
        //运行至此说明carray还是等于1,即全是9的情况,需要在首位插入数字1
        digits.insert(1, at: 0)
        return digits
    }
}

百度了一下,找到另一种解法,求余然后,设置一个标志位判断是否进位 代码如下:

class Solution {
    func plusOne(_ digits: [Int]) -> [Int] {
        if digits.isEmpty {
            return digits
        }
        //这里这样写的原因是,参数digits是let定义的不可变的哦
        var digits = digits
        
        var carray = 1
        for i in (0..<digits.count).reversed() {
            let sum = digits[i] + carray
            //如果进位即sum = 10,digits[i] = 0
            digits[i] = sum % 10
            carray = sum / 10
            //如果进位 carray = 1,不进位则为零,那么循环结束
            if carray == 0 { return digits }
        }

        //运行至此说明carray还是等于1,即全是9的情况,需要在首位插入数字1
        digits.insert(1, at: 0)
        return digits
    }
}
用Swift开始学习算法中,在LeetCode中开始做初级算法这一章节,将做的题目在此做个笔记吧。

参考文章:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.04.01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目:加一
    • 描述:
      • 用Swift开始学习算法中,在LeetCode中开始做初级算法这一章节,将做的题目在此做个笔记吧。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档