// 下面使用第一种方法算的
public int[] plusOne(int[] digits) {
int[] newArr = null;
boolean flat = false; // 用来记录是否需要进位
int arrLen = digits.length;
for (int i = arrLen-1; i >= 0 ; i--){
if (i == arrLen-1){
// 这是最后一位,按题目要求处理
digits[i] ++;
}
if (i == 0 ){
if (digits[i] > 9){
// 如果需要进位, 特殊判断数组是否需要扩充
flat = true;
digits[i] -= 10;
}else{
break;
}
}
if (digits[i] > 9){
// 前面排除了i为第一位的情况,所以不会越界
digits[i] -= 10;
digits[i-1] ++;
}
}
/*
* 数组的拷贝
* */
if (flat){
newArr = new int[arrLen+1];
newArr[0] = 1;
for (int i = 1; i < newArr.length; i++){
newArr[i] = digits[i-1];
}
}else {
return digits;
}
return newArr;
}
7.加一
最新推荐文章于 2024-09-19 14:20:37 发布