文章目录

  • 一、题目
    • 1、题目描述
    • 2、基础框架
    • 3、原题链接
  • 二、解题报告
    • 1、思路分析
    • 2、时间复杂度
    • 3、代码详解
  • 三、本题小知识
  • 四、加群须知

一、题目

1、题目描述

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

2、基础框架

  • C语言 版本给出的基础框架代码如下:
int* plusOne(int* digits, int digitsSize, int* returnSize){}

3、原题链接

LeetCode 66. 加一

二、解题报告

1、思路分析

  考虑全是9的情况,数组长度需要加一;其他情况直接顺位模拟加法和进位即可。

2、时间复杂度

  需要遍历一边数组求解,所以时间复杂度为 O(n)O(n)O(n)。

3、代码详解

int* plusOne(int* digits, int digitsSize, int* returnSize){int i, add;int *ret = NULL;for(i = 0; i < digitsSize; ++i) {if(digits[i] != 9) {break;}}if(i == digitsSize) {                                       // (1)ret = (int *) malloc( (digitsSize + 1) * sizeof(int));ret[0] = 1;for(i = 1; i < digitsSize + 1; ++i) {ret[i] = 0;}*returnSize = digitsSize + 1;return ret;}// (2)ret = (int *) malloc( digitsSize * sizeof(int));*returnSize = digitsSize;add = 1;                                                    // (3)for(i = digitsSize - 1; i >= 0; --i) {ret[i] = digits[i] + add;if(ret[i] >= 10) {                                      // (4)ret[i] -= 10;add = 1;}else {add = 0;                                            // (5)}}return ret;
}
  • (1)(1)(1) 处理 99999 + 1 的情况
  • (2)(2)(2) 处理其它情况
  • (3)(3)(3) add 代表上一个位的进位,由于是加一,默认最低位进位为 1
  • (4)(4)(4) 如果大于等于10,产生进位
  • (5)(5)(5) 不产生进位

三、本题小知识

利用数组可以对大整数进行进位模拟加法。


四、加群须知

  相信看我文章的大多数都是「 大学生 」,能上大学的都是「 精英 」,那么我们自然要「 精益求精 」,如果你还是「 大一 」,那么太好了,你拥有大把时间,当然你可以选择「 刷剧 」,然而,「 学好算法 」,三年后的你自然「 不能同日而语 」
  那么这里,我整理了「 几十个基础算法 」 的分类,点击开启:

⭐算法入门⭐《线性枚举》简单09 —— LeetCode 66. 加一相关推荐

  1. Java实现 LeetCode 66 加一

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

  2. 通讯录排序 (20分)_算法入门篇:简单的排序算法

    作者:dorseyCh来源:http://www.imooc.com/article/264180 很久之前有过一次面试,被问到一个问题,能不能写一个冒泡排序?说实话,尽管在这之前曾经写过不少比这个更 ...

  3. LeetCode 66. 加一

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

  4. leetcode 66. 加一(C语言)

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

  5. LeetCode 66 加一

    原题链接 关键词 :数组  模拟法 解题思路: 此题为处理数组,数组特点  --数组下标  可以前后覆盖  数组元素可交换等. 此题分为三种情况 1.传入数为234形式   ,加一后无进位.直接在最后 ...

  6. leetcode 66. 加一-java简短代码实现

    题目所属分类 模拟加法 原题链接 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字. 你可以假设除了整数 0 之外 ...

  7. ⭐算法入门⭐《二分枚举》简单15 —— LeetCode LCP 18. 早餐组合

    文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述   小扣在秋日市集选择了一 ...

  8. LeetCode算法入门- Multiply Strings -day18

    LeetCode算法入门- Multiply Strings -day18 题目介绍 Given two non-negative integers num1 and num2 represented ...

  9. 《算法基础》线性枚举(一)——最值算法

    目录 1.LeetCode--485. 最大连续 1 的个数 2.LeetCode--1464. 数组中两元素的最大乘积 3.LeetCode--153. 寻找旋转排序数组中的最小值 4.LeetCd ...

最新文章

  1. hibernate之 一级缓存和二级缓存
  2. mysql 替代 in_mysql用什么代替in
  3. table 在网页无法顶到头部问题
  4. 网络知识:秒懂你家的网络连接方式
  5. Razor Page–Asp.Net Core 2.0新功能 Razor Page介绍
  6. linux tcp 创建,Linux下tcp服务器创建的步骤
  7. MongoDB事实:商品硬件上每秒插入80000次以上
  8. 用AI说再见!“辣眼睛”的买家秀
  9. java 五个数字_关于java:五个任意整数找出其中第二大的数字
  10. sharepoint小 tip
  11. linux log 2 1,51CTO博客-专业IT技术博客创作平台-技术成就梦想
  12. GoldWave2020注册激活码版下载音频处理制作教程
  13. 电脑怎么显示文件后缀名?3个步骤
  14. 复信号与信号的I/Q值
  15. 2411681-88-2,Thalidomide-O-PEG4-NHS ester它与胺部分反应
  16. Git HEAD 分支游离,切回master导致代码丢失的处理
  17. 如何使用谷歌插件自动备份标签
  18. python-字符串补录
  19. 忘记Excel文件打开密码,怎么办?
  20. Windows下安装tree

热门文章

  1. 【java版数据结构】死亡游戏约瑟夫避免自杀问题
  2. android和ios好用的功能分屏,iOS 15功能全面曝光,终于加入应用分屏?这回安卓系统领先了...
  3. 超级简单的Android镂空文本方法
  4. kotlin跳出for循环
  5. Java跳出双层for循环
  6. 什么叫侧面指纹识别_面指纹识别最新资讯
  7. python写cad命令_pyautocad 的一些简单操作指令
  8. 自尊宣言—个人力量的源泉
  9. 开源工作流自动化工具n8n
  10. [ZT]面试难,应聘难,好工作,今安在?