题目描述
Given a non-negative number represented as an array of digits, plus one to the number.
The digits are stored such that the most significant digit is at the head of the list.
由数字数组来表示的非负整数,使其加上1,返回结果。解题思路
主要需要考虑进位问题。初始时可以令加数1表示为进位符,循环相加即可。
代码
public int[] plusOne(int[] digits) {
int carryDigit=1;//进位符,初始时赋值为加数1
int sum;//每位数加上进位符的和
if(digits==null || digits.length==0){
return digits;
}
for(int i = digits.length-1;i>=0;i--){
sum = digits[i] + carryDigit;
carryDigit = sum/10;//1表示进1,0表示不进位
digits[i] = sum % 10;
}
if(carryDigit==1){
//digits[0] + carryDigit需要进位的情况
int[] newDigits = new int[digits.length+1];
for(int i = newDigits.length- 1;i > 0;i--){
newDigits[i] = digits[i-1];
}
newDigits[0] = 1;
return newDigits;
}
return digits;
}