Question:
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,若和小于10则返回;否则上一位进1,以此反复知道最高位进1,若最高位+1后结果大于10,则开辟一个n+1的数组空间,最高位为1。
代码实现
public class Solution {
public int[] plusOne(int[] digits) {
if(digits==null||digits.length==0)
return null;
int carry = 1;
int length = digits.length;
for(int i = length-1;i>=0;--i){
int sum = carry + digits[i];
digits[i] = sum%10;
carry = sum/10;
if(carry == 0)
return digits;
}
int[] a = new int[length+1];
System.arraycopy(digits,0,a,1,length);
a[0] = carry;
return a;
}
}