LC 66. 加一
题目描述
这是 LeetCode 上的 66. 加一 ,难度为 简单。
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:1
2
3
4
5输入:digits = [1,2,3]
输出:[1,2,4]
解释:输入数组表示数字 123。
示例 2:1
2
3
4
5输入:digits = [4,3,2,1]
输出:[4,3,2,2]
解释:输入数组表示数字 4321。
示例 3:1
2
3输入:digits = [0]
输出:[1]
提示:
- 1 <= digits.length <= 100
- 0 <= digits[i] <= 9
模拟
这是 2. 两数相加 的简化版,其中一个操作固定为 $1$。
只需要按照题目进行模拟即可,使用 $t$ 记录进位。
代码:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16class Solution {
public int[] plusOne(int[] digits) {
int n = digits.length;
digits[n - 1]++;
List<Integer> list = new ArrayList<>();
for (int i = n - 1, t = 0; i >= 0 || t != 0; i--) {
int x = i >= 0 ? digits[i] + t : t;
list.add(x % 10);
t = x / 10;
}
Collections.reverse(list);
int[] ans = new int[list.size()];
for (int i = 0; i < list.size(); i++) ans[i] = list.get(i);
return ans;
}
}
- 时间复杂度:$O(n)$
- 空间复杂度:$O(n)$
最后
这是我们「刷穿 LeetCode」系列文章的第 No.66
篇,系列开始于 2021/01/01,截止于起始日 LeetCode 上共有 1916 道题目,部分是有锁题,我们将先把所有不带锁的题目刷完。
在这个系列文章里面,除了讲解解题思路以外,还会尽可能给出最为简洁的代码。如果涉及通解还会相应的代码模板。
为了方便各位同学能够电脑上进行调试和提交代码,我建立了相关的仓库:https://github.com/SharingSource/LogicStack-LeetCode 。
在仓库地址里,你可以看到系列文章的题解链接、系列文章的相应代码、LeetCode 原题链接和其他优选题解。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!