我的做法:就是普通的模拟遍历
class Solution {
public int[] plusOne(int[] digits) {
int ca = 1;
for (int i = digits.length - 1; i >= 0; --i) {
int temp = digits[i] + ca;
digits[i] = temp % 10;
ca = temp / 10;
}
if (ca != 1) return digits;
else {
int[] ans = new int[digits.length + 1];
ans[0] = 1;
for (int i = 1; i < ans.length; ++i) {
ans[i] = digits[i - 1];
}
return ans;
}
}
}
但是有冗余步骤,比如在遍历每一位时,如果没有再向前进位,则直接return
;此外,如果是99+1=100
的这种情况,只需要重新建立一个长度加一的数组,首位为1,其余位置无需改变(默认为0)即可。
class Solution {
public int[] plusOne(int[] digits) {
int ca = 1;
for (int i = digits.length - 1; i >= 0; --i) {
if (ca == 0) break;
int temp = digits[i] + ca;
digits[i] = temp % 10;
ca = temp / 10;
}
if (ca != 1) return digits;
else {
int[] ans = new int[digits.length + 1];
ans[0] = 1;
// for (int i = 1; i < ans.length; ++i) {
// ans[i] = digits[i - 1];
// }
return ans;
}
}
}