题目
加一
按题目应该分为两种情况,数值为9和其它数字,因为9+1=10需要考虑到进位。按照个、十、百等等的特性。应该按照倒叙便利,并判断加一后是否等于10。
这里是利用了标识位,默认为1进行相加,如果相加后等于10,当前为变为0,标识位仍为1,继续循环。当不等于10时,后续操作不需要在进行,直接返回。
当数组遍历完成后,还没有返回,说明时是 9,99,999等的情况,直接生成一个新的原长度+1的数组,首位为1后返回。
class Solution {
public int[] plusOne(int[] digits) {
int flag = 1;
for(int i = digits.length - 1; i >= 0; i--) {
if (flag != 0) {
digits[i] = digits[i] + flag;
if(digits[i] == 10) {
digits[i] = 0;
flag = 1;
} else {
return digits;
}
}
}
int[] nums = new int[digits.length + 1];
nums[0] = 1;
return nums;
}
}
其实这里标识可以去掉。
class Solution {
public int[] plusOne(int[] digits) {
for(int i = digits.length - 1; i >= 0; i--) {
digits[i] = digits[i] + 1;
if(digits[i] == 10) {
digits[i] = 0;
} else {
return digits;
}
}
int[] nums = new int[digits.length + 1];
nums[0] = 1;
return nums;
}
}