文章目录

  • 一、题目
    • 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. gatsby_使用TinaCMS + Gatsby编辑Markdown的3种方法
  2. centos7 安装小记
  3. centos7 下修改网络配置
  4. 1600802038
  5. 集成学习 Ensemble Learing(???)
  6. 致力于绿色环保的美国大型数据中心
  7. vs13配置matlab,VS配置电脑系统变量(VS2013+matlab2018a)
  8. 硬盘SMART信息数据结构
  9. cocos creator 绘制闪电特效
  10. APPCAN 电子签名设置
  11. AIoT系列:AI赋能物联网,探索AIoT发展新趋势
  12. gitlab+maven+spingboot+jenkin实现自动化部署
  13. 第一次学习计划(含用pytorch跑通mnist例子)
  14. R.I.P,又一位程序员巨佬——左耳朵耗子陨落
  15. Windows 开发之VC++垃圾清理程序软件
  16. JDOJ 3055: Nearest Common Ancestors
  17. 一周以来的工作学习总结
  18. 为什么每个商场都在卖新能源车,特斯拉却频频撤店?
  19. u盘固定盘符_个性人士必备!U盘盘符固定3步妙招
  20. 基于单片机的智能鱼缸系统设计(#0471)

热门文章

  1. python to excel 路径_好消息!Python和Excel终于可以互通了!
  2. toFixed精度问题
  3. xlwt 模块操作 excel表格, 填充颜色
  4. 从砸完电脑去买新电脑这事扯一下建造者设计模式
  5. 关于Java写给自己的话
  6. 微软:企业切勿盲目搭建云数据中心
  7. java poi createcell_创建空白POI(java初学者)
  8. 笔记本重置找不到恢复环境_win10重置此电脑找不到恢复环境怎么办
  9. git am 冲突解决
  10. php如何导入字体样式,css怎么引入外部字体?css 字体样式设置的方法(实例)...