⭐算法入门⭐《线性枚举》简单09 —— LeetCode 66. 加一
文章目录
- 一、题目
- 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) 不产生进位
三、本题小知识
利用数组可以对大整数进行进位模拟加法。
四、加群须知
相信看我文章的大多数都是「 大学生 」,能上大学的都是「 精英 」,那么我们自然要「 精益求精 」,如果你还是「 大一 」,那么太好了,你拥有大把时间,当然你可以选择「 刷剧 」,然而,「 学好算法 」,三年后的你自然「 不能同日而语 」。
那么这里,我整理了「 几十个基础算法 」 的分类,点击开启:
66. 加一 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字. 你可以假设除了整数 0 之外,这个整数不会以零开头. 示 ... 作者:dorseyCh来源:http://www.imooc.com/article/264180 很久之前有过一次面试,被问到一个问题,能不能写一个冒泡排序?说实话,尽管在这之前曾经写过不少比这个更 ... 1. 题目 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字. 你可以假设除了整数 0 之外,这个整数不会以零开头. 示例 ... 题目: 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字. 你可以假设除了整数 0 之外,这个整数不会以零开头. 示例 1 ... 原题链接 关键词 :数组 模拟法 解题思路: 此题为处理数组,数组特点 --数组下标 可以前后覆盖 数组元素可交换等. 此题分为三种情况 1.传入数为234形式 ,加一后无进位.直接在最后 ... 题目所属分类 模拟加法 原题链接 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字. 你可以假设除了整数 0 之外 ... 文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述 小扣在秋日市集选择了一 ... LeetCode算法入门- Multiply Strings -day18 题目介绍 Given two non-negative integers num1 and num2 represented ... 目录 1.LeetCode--485. 最大连续 1 的个数 2.LeetCode--1464. 数组中两元素的最大乘积 3.LeetCode--153. 寻找旋转排序数组中的最小值 4.LeetCd ...⭐算法入门⭐《线性枚举》简单09 —— LeetCode 66. 加一相关推荐
最新文章
热门文章