题目
类型:Array
解题思路
对数组 digits 加一时,只需要关注 digits 的末尾出现了多少个 9 即可。
考虑如下的三种情况:
- 如果 末尾没有 9,例如 [1,2,3],那么直接将末尾的数加一,得到 [1,2,4] 并返回;
- 如果 digits 的末尾有若干个 9,例如 [1,2,3,9,9],那么只需要找出从末尾开始的第一个不为 9 的元素,即 3,将该元素加一,得到[1,2,4,9,9]。随后将末尾的 9 全部置零,得到 [1,2,4,0,0] 并返回。
- 如果 digits 的所有元素都是 9,例如 [9,9,9,9,9],那么答案为 [1,0,0,0,0,0]。只需要构造一个长度比 digits 多 1 的新数组,将首元素置为 1,其余元素置为 0 即可。
代码
class Solution {
public int[] plusOne(int[] digits) {
int n = digits.length;
for (int i = n - 1; i >= 0; --i) {
if (digits[i] != 9) {
++digits[i];
for (int j = i + 1; j < n; ++j) {
digits[j] = 0;
}
return digits;
}
}
// digits 中所有的元素均为 9
int[] ans = new int[n + 1];
ans[0] = 1;
return ans;
}
}