题目
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 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
鼠鼠牌思路
判断是否最后一位为九,如果是九,九变成零,倒数第二位加一,如果不是九最后一位加一。
鼠鼠牌代码
public class Solution {
public int[] plusOne(int[] digits) {
int n = digits.length;
// 从数组的最后一位开始向前遍历
for (int i = n - 1; i >= 0; i--) {
if (digits[i] != 9) {
// 如果最后一位不是9,直接加一然后返回
digits[i] += 1;
return digits;
} else {
// 如果最后一位是9,将其置为0
digits[i] = 0;
}
}
// 如果所有位都是9,需要在数组最前面插入1
int[] newDigits = new int[n + 1];
newDigits[0] = 1;
System.arraycopy(digits, 0, newDigits, 1, n);
return newDigits;
}
public static void main(String[] args) {
Solution solution = new Solution();
int[] digits = {1, 2, 3};
int[] result = solution.plusOne(digits);
System.out.println(Arrays.toString(result)); // 输出: [1, 2, 4]
int[] digits2 = {9, 9, 9};
int[] result2 = solution.plusOne(digits2);
System.out.println(Arrays.toString(result2)); // 输出: [1, 0, 0, 0]
}
}