Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >leetcode题解-66.加一

leetcode题解-66.加一

作者头像
编程珠玑
发布于 2019-09-02 14:42:05
发布于 2019-09-02 14:42:05
40200
代码可运行
举报
文章被收录于专栏:编程珠玑编程珠玑
运行总次数:0
代码可运行

题目-66. Plus One

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

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

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

分析

实际上这个问题相当于是对一个整数加1,特别的是,这个整数的每一位都存储在了一个数组中。那么只需要按照加法的运算法则计算就可以了。从后往前遍历,如果该位是9,则置0进位,继续计算。直到最后该位不是9,退出循环。最后检查循环终止,如果没有循环到第一位,说明最终不需要增加1位,例如,98+1=99;如果循环到了第一位,说明最后需要进位,则数组长度需要加1,例如99+1=100。

代码

C语言实现代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * Return an array of size *returnSize.
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* plusOne(int* digits, int digitsSize, int* returnSize) {
    if(NULL == digits)
        return NULL;
    int loop = 0;
    int *ret = NULL;
    /*按照普通加法计算,9+1进1,当前位置0*/
    for(loop = digitsSize-1; loop >= 0;loop--)
    {
        if(9 != digits[loop] )
        {
            /*当前不等于9,加1后退出即可*/
            digits[loop]+=1;
            break;
        }
        else
        {
            /*等于9时,进位,当前位置0*/
            digits[loop] = 0;
        }
    }
    /*没有循环到最后,说明结果位数不变*/
    if(0 <= loop)
    {
        /*这里直接返回原数组,是否不太好?*/
        *returnSize = digitsSize;
        return digits;
    }
    else
    {
        /*全为9,需要增加一位*/
        ret = (int*)calloc(digitsSize +1 ,sizeof(int));
        if(NULL == ret)
        {
            return NULL;
        }
        ret[0] = 1;
        *returnSize = digitsSize +1;
        return ret;
    }
}

运行时间

Runtime: 0 ms

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

本文分享自 编程珠玑 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
LeetCode 66. 加一
题目 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 示例 1: 输入: [1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字 123。 示例 2: 输入: [4,3,2,1] 输出: [4,3,2,2] 解释: 输入数组表示数字 4321。 解题思路 class Solution: def plusOne(self, digits: [int])
freesan44
2020/06/03
4310
LeetCode 66. 加一
输入: [1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字 123。 示例 2:
手撕代码八百里
2022/06/15
2510
66. 加一
给定一个非负整数组成的非空数组,在该数的基础上加一,返回一个新的数组。 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。 可以假设整数不包含任何前导零,除了数字0本身。 示例 1: 输入: [1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字 123。 示例 2: 输入: [4,3,2,1] 输出: [4,3,2,2] 解释: 输入数组表示数字 4321。 解:主要是审题,注意都为9时需要扩大数组,进行进位 public int[] plusOne(int[] digits)
张伦聪zhangluncong
2022/10/26
2570
【每日一题】【leetcode】3. 数组-加一
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 难易程度:easy 示例 1: 输入: [1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字 123。
aneutron
2022/08/10
1950
【leetcode刷题】20T31-加一
https://leetcode-cn.com/problems/plus-one/
木又AI帮
2020/03/26
3130
LeetCode 66. 加一
1. 题目 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 示例 1: 输入: [1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字 123。 示例 2: 输入: [4,3,2,1] 输出: [4,3,2,2] 解释: 输入数组表示数字 4321。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/pl
Michael阿明
2022/11/26
1980
leetcode 66 | 加一
分析:这道题是不是看第一眼是不是就想把数组转化为整数,然后再用这个整数加1,再将这个结果转化为数组~那可就调入这道题的陷阱里了,这样做是不行的,因为这个整数可以很大,大的超过int的范围,甚至超过long的范围。所以我们应该换个角度思考。我们可以分情况讨论,第一,我们让数组的最后一个数加1,即个位加1,如果小于10,则说明不存在进位的问题。所以我们就可以直接返回digits数组;第二,个位加1之后,若大于等于10,说明存在进位问题,所以最后的结果数组的长度可能为digits的数组长度加1。我们可以定义一个数组result,长度为digits的长度+1,然后把digits数组copy一份到result[1]~result[digits.length],然后来处理进位的问题。那进位怎么处理呢?其实也很简单,因为个位加1后大于等于10,所以个位的数保留相加之和的个位,然后定义初始进位carry为1,从result[digits.length-1],即十位开始,当carry !=0时,就继续上前进位,本身保留与进位相加结果之和的个位即可,最后判断result[0],即第一位是否为0,若不为0,则直接返回result,若为0,则返回从索引1到索引digits.length的子串即可。
ACM算法日常
2019/01/23
6740
LeetCode笔记:66. Plus One
但看题目还看不懂是什么意思,跑了几个测试用例后看答案看明白了,就是数组的每一个位置代表一个数的每一位,有个位十位百位等,如[8]表示数字8,[1,2]表示数字12等等,题目要求将给出的数字代表的数字加一并用同样的形式返回结果。
Cloudox
2021/11/23
1620
【每日leetcode】33.加一
难道就我一个人看不懂题? ——leetcode此题热评 前言 哈喽,大家好,我是一条。 糊涂算法,难得糊涂 Question 66. 加一 难度:简单 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 示例 1: 输入:digits = [1,2,3] 输出:[1,2,4] 解释:输入数组表示数字 123。 示例 2: 输入:digits = [4,3,2,1
一条coding
2021/09/15
2460
leetcode-66-Plus One
Given a non-empty array of digits representing a non-negative integer, plus one to the integer.
chenjx85
2019/03/14
4010
Leetcode No.66 加一
示例 1: 输入:digits = [1,2,3] 输出:[1,2,4] 解释:输入数组表示数字 123。
week
2022/01/07
2270
LeetCode 66. 加一
题目很简单,找到数组最后一个元素加1即可,但是我这里提出一种进阶的要求,返回的是数字怎么办?
Regan Yue
2023/07/10
1570
LeetCode | 66.加一
这道题目的思路比较符合我们平时列竖式的思路,这道题目我使用 C 语言进行完成,看我下面的分析。
码农UP2U
2020/09/29
3740
LeetCode | 66.加一
​LeetCode刷题实战66:加一
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !
程序员小猿
2021/01/20
2030
python(leetcode)-66加
思路:对每个值遍历判断,如果为9则变为0,并且继续遍历,如果为0到8则加1操作,并且break退出判断
py3study
2020/01/17
6900
【小Y学算法】⚡️每日LeetCode打卡⚡️——19.加一
本文章是⭐️小Y学算法⭐️的内容,该专栏还有多篇优质内容在等待你观看,现在点击右上角点击这个————????订阅专栏???? 就可以免费观看多篇相关内容的文章啦! ????前言 ????原题样例 ?
呆呆敲代码的小Y
2021/09/01
3230
【小Y学算法】⚡️每日LeetCode打卡⚡️——19.加一
画解算法:66. 加一
https://leetcode-cn.com/problems/plus-one/
灵魂画师牧码
2019/06/27
6420
画解算法:66. 加一
66. 加一
链接 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 示例1: 输入: [1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字 123。 示例2: 输入: [4,3,2,1] 输出: [4,3,2,2] 解释: 输入数组表示数字 4321。 func plusOne(digits []int) []int { for i := len(d
Michel_Rolle
2021/03/07
2.7K0
【Leetcode-58.最后一个单词的长度 -66.加一】
题目:给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。单词是指仅由字母组成、不包含任何空格字符的最大子字符串。
YoungMLet
2024/03/01
1090
LeetCode 进阶之路 - 加一
核心思想就是最后一位加1,然后处理一些临界值的情况,如9、99、999等 先对其进行加1,再拿加1后的值和10进行取余,不为0则表示该值不是9,无需进位,直接返回; 如果加1后得到值取余后得到0,则需要向前进位,如果每一位都需要进位,最后开辟一个新的数组,数组的长度比之前大1,将数组的第一个值设为1,因为数组不设置的话默认值是0;
Li_XiaoJin
2022/06/10
1880
相关推荐
LeetCode 66. 加一
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验