题目链接
题目:

分析:
这个问题主要考虑到进位的问题,如果数组是[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;
}
}
本文详细解析了一个关于数组进位加一的算法问题,重点讨论了如何处理数组元素达到最大值9时的进位情况,特别是当数组全部为9的情况,需要额外增加数组长度并返回新的数组。通过具体的代码实现,展示了算法的设计思路和实现细节。
212

被折叠的 条评论
为什么被折叠?



