前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >漫画:最简单的面试高频题 “加1”

漫画:最简单的面试高频题 “加1”

作者头像
程序员小浩
发布2020-03-31 15:07:57
3970
发布2020-03-31 15:07:57
举报
文章被收录于专栏:小浩算法小浩算法

01

题目分析

第66题:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。

示例 1:

输入: [1,2,3]

输出: [1,2,4]

解释: 输入数组表示数字 123。

示例 2:

输入: [4,3,2,1]

输出: [4,3,2,2]

解释: 输入数组表示数字 4321。

根据题目,我们需要加一!没错,加一很重要。因为它只是加一,所以我们会考虑到两种情况:

1、普通情况,除9之外的数字加1。

2、特殊情况,9加1。(因为9加1需要进位)

所以我们只需要模拟这两种运算,就可以顺利进行求解!

02

题目图解

假设我们的数为[1,9,9]

大概是下面这样:(这个图解...真的有点太简单了...)

当然,这里我们需要考虑一种特殊情况,就是类似99,或者999,我们需要进行拼接数组。具体如下图:

如上图所示,我们最后只需要将其转换成代码即可!

03

Go语言示例

func plusOne(digits []int) []int {
    for i:=len(digits)-1; i>=0; i-- {
        if digits[i] < 9 {  // 当前位置不用进位,+1,然后直接返回
            digits[i]++
            return digits
        } else {            // 要进位,当前位置置0
            digits[i] = 0
        }
    }
    return append([]int{1}, digits...)
}

提示:

append(a,b...) 的含义是:将b切片中的元素追加到a中。

注:本系列所有教程中都不会用到复杂的语言特性,大家不需要担心没有学过go。算法思想最重要,使用go纯属本人爱好。同时,本系列所有代码均在leetcode上进行过测试运行,保证其严谨性!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小浩算法 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档