T66. Plus One【Easy】
题目
给一个用数组表示的非负整数,加一并返回。
假设数组除了 0 本身不会零打头(不会有 01,007 这样的数组)。
高位在数组头部。
思路
① 若不进位则直接++返回
② 若进位则我当前位置设为 0,前面的判断是否进位,然后重新执行 ① 和 ②
③ 若遇到 99999 这样全是 9 的遍历完都没返回,则给前面加一个 1,返回
看代码就可以懂了~
代码
代码取自 Top Solution,稍作注释
public int[] plusOne(int[] digits) {
//获得数字长度
int n = digits.length;
//从低位往高位遍历
for(int i=n-1; i>=0; i--) {
//若小于9,则直接++,跳出循环返回+1
if(digits[i] < 9) {
digits[i]++;
return digits;
}
//能执行到这里代表进位了,所以设为 0
digits[i] = 0;
}
//能执行到这里说明前面都是 999999,所以添加一位,设成 1
int[] newNumber = new int [n+1];
newNumber[0] = 1;
return newNumber;
}
网友评论