文章目录
1. 题目
2. 思路
(1) 数学法
- 首先创建一个比原数组长1的新数组,最高位设为0,后面的元素与原数组相同,方便进位,然后从后向前遍历,若元素为9,则进位设为0,若元素不为9,则加1直接跳出循环。
- 最后判断最高位是否为0,若为0则去掉最高位返回即可。
(2) 数学法优化
- 与(1)的思想基本相同,若最高位进位,则结果必定为10……00,因此可以直接创建一个新数组,最高位设为0即可。
3. 代码
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
}
}
class Solution {
public int[] plusOne(int[] digits) {
int[] res = new int[digits.length + 1];
res[0] = 0;
for (int i = 1; i < res.length; i++) {
res[i] = digits[i - 1];
}
for (int i = res.length - 1; i >= 0; i--) {
if (res[i] == 9) {
res[i] = 0;
} else {
res[i]++;
break;
}
}
if (res[0] == 0) {
return Arrays.copyOfRange(res, 1, res.length);
} else {
return res;
}
}
}
class Solution1 {
public int[] plusOne(int[] digits) {
for (int i = digits.length - 1; i >= 0; i--) {
if (digits[i] == 9) {
digits[i] = 0;
} else {
digits[i]++;
return digits;
}
}
digits = new int[digits.length + 1];
digits[0] = 1;
return digits;
}
}