题目链接
题目:
分析:
这个问题主要考虑到进位的问题,如果数组是[9,9,9,9]这种情况,应该输出[1,0,0,0,0],这样数组的长度是比原数组多一位的,所以在返回数组要考虑数组的长度。
代码:
class Solution {
public int[] plusOne(int[] digits) {
int length = digits.length;
//如果不会产生进位直接加1返回原数组
if((digits[length - 1] + 1) < 10) {
digits[length - 1] = digits[length - 1] + 1;
return digits;
}
//有进位
int jw = 1;
for(int i = length -1 ;i >= 0 ;i--) {
int temp = (digits[i] + jw);
jw = temp / 10;
digits[i] = temp % 10;
}
//最高位还有进位的时候,应该创建length+1的数组返回
if(jw == 1) {
int[] res = new int[length + 1];
res[0] = jw;
for(int i = 0; i < length; i++) {
res[i+1] = digits[i];
return res;
}
}
return digits;
}
}