66. 加一
解题思路
1.基于数组直接操作,由末尾递进操作,进行进位判断
2.如果大于10,则将累加位保留到下一次,如果小于10,则直接将当前结果赋值,并且value递进位为0
3.判断最后递进位是否为0,如果不为0 ,则需要在原先数组上,添加一位
解题遇到的问题
无
后续需要总结学习的知识点
1.Arrays.copyof与System.arraycopy的区别和联系
##解法1
class Solution {
public int[] plusOne(int[] digits) {
// 基于数组直接操作,由末尾递进操作,进行进位判断
int value = 1;
for (int i = digits.length - 1; i >= 0; i--) {
//如果大于10,则将累加位保留到下一次
if ((digits[i] + value) / 10 != 0) {
value = (digits[i] + value) / 10;
digits[i] = (digits[i] + value) % 10;
} else {
//如果小于10,则直接将当前结果赋值,并且value递进位为0
digits[i] = digits[i] + value;
value = 0;
}
}
//判断最后递进位是否为0,如果不为0 ,则需要在原先数组上,添加一位
if (value != 0) {
int[] result = new int[digits.length + 1];
System.arraycopy(digits, 0, result, 1, digits.length);
result[0] = value;
return result;
} else {
return digits;
}
}
}
网友评论