> 文档中心 > 【LeetCode每日一题】——66.加一

【LeetCode每日一题】——66.加一

文章目录

  • 一【题目类别】
  • 二【题目难度】
  • 三【题目编号】
  • 四【题目描述】
  • 五【题目示例
  • 六【题目提示】
  • 七【解题思路】
  • 八【时间频度】
  • 九【代码实现】
  • 十【提交结果】

一【题目类别】

二【题目难度】

  • 简单

三【题目编号】

  • 66.加一

四【题目描述】

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

五【题目示例】

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

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

  • 示例 3:
    输入:digits = [0]
    输出:[1]

六【题目提示】

  • 1 <= digits.length <= 100
  • 0 <= digits[i] <= 9

七【解题思路】

  • 从后向前遍历数组,遇到“9”就变成“0”,表示进位,继续向前遍历,如果遇到不是“9”,此位置数字加一,然后返回即可。最后如果还有进位,新建一个数组,首位是“1”,其余位都是“0”

八【时间频度】

  • 时间复杂度:O ( n ) O(n) O(n),其中n n n为数组长度
  • 空间复杂度:O ( 1 ) O(1) O(1)

九【代码实现】

  1. Java语言版
package Array;public class p66_PlusOne {    public static void main(String[] args) { int[] digits = {1, 2, 3}; int[] res = plusOne(digits); for (int i = 0; i < res.length; i++) {     System.out.print(res[i]); }    }    public static int[] plusOne(int[] digits) { int len = digits.length; for (int i = len - 1; i >= 0; i--) {     if (digits[i] == 9) {  digits[i] = 0;     } else {  digits[i]++;  return digits;     } } int[] res = new int[len + 1]; res[0] = 1; return res;    }}
  1. C语言版
#include#includeint* plusOne(int* digits, int digitsSize, int* returnSize){for (int i = digitsSize - 1; i >= 0; i--){if (digits[i] == 9){digits[i] = 0;}else{digits[i]++;*returnSize = digitsSize;return digits;}}int* res = (int*)calloc((digitsSize + 1), sizeof(int));res[0] = 1;*returnSize = digitsSize + 1;return res;}/*主函数省略*/

十【提交结果】

  1. Java语言版
    【LeetCode每日一题】——66.加一

  2. C语言版
    【LeetCode每日一题】——66.加一

手机爆料