Plain's Blog

休想打败我的生活🔥

  1. 1. 题目描述(官方原文)
    1. 1.1. 示例 1:
    2. 1.2. 示例 2:
  2. 2. 思路
  3. 3. 代码实现(Java)
  4. 4. 复杂度

题目链接:https://leetcode-cn.com/problems/plus-one/

题目描述(官方原文)

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。

你可以假设除了整数 0 之外,这个整数不会以零开头。

示例 1:

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

示例 2:

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

思路

这道题主要分为三种情况

  • 当数组最后一个值小于9时,就加1,返回就好了。

  • 当数组最后一个值等于9时,就把该值赋值为0,在下一轮中倒数第二个值如果小于9就加1返回了。

  • 当全为9时,数组的个数会发生变化,第一个值为9时变成[1,0],所以需要一个新的数组接纳,为新数组的第一个值赋值为1。

代码实现(Java)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class Test {
private static int[] plusOne(int[] digits) {

int size = digits.length;
for (int i = size - 1; i >= 0; i --) {

if(digits[i] < 9) {
digits[i] ++ ;
return digits;
}
digits[i] = 0;
}

int[] arr = new int[size + 1];
arr[0] = 1;
return arr;

}

public static void main(String[] args) {
int [] nums = {9,9,9,9,9,9};

nums = plusOne(nums);

for (int num : nums) {
System.out.print(" " + num);
}

}
}

复杂度

  • 时间复杂度:O(n)

  • 空间复杂度:O(n)

本文作者 : Plain
This blog is under a CC BY-NC-SA 3.0 Unported License
本文链接 : https://plain-dev.com/leetcode-plus-one/

本文最后更新于 天前,文中所描述的信息可能已发生改变