Given a non-negative integer represented as a non-empty array of digits, plus one to the integer.
You may assume the integer do not contain any leading zero, except the number 0 itself.
The digits are stored such that the most significant digit is at the head of the list.
PS:题中假定数组不为空,并且所有的数字都是非负数。
加一是指,将最后一位加1,
eg: input:[9,9] 99 + 1 = 100 return [1,0,0]
假定所有数字都是只有一位数。
class Solution {
public int[] plusOne(int[] digits) {
int count = 0;
if(digits[digits.length-1]%10 == 9){
count = 1;
digits[digits.length-1] = 0;
}else{
count = 0;
digits[digits.length-1] += 1;
}
for(int i=digits.length-2;i>=0;i--){
if(count == 1){
if(digits[i] % 10 == 9){
digits[i] = 0;
}
else{
digits[i] += 1;
count = 0;
}
}
}
if(count == 1){
int[] newD = new int[digits.length+1];
newD[0] = 1;
System.arraycopy(digits,0,newD,1,digits.length);
return newD;
}
return digits;
}
}
上述是数组复制,其中:
src: 源数组
src_position: 从源数组中的哪个位置开始复制
dest: 目标数组
dest_position: 从目标数组中的哪个位置开始复制
length: 复制长度(在src长度以内)
Example:
int[] src = [1,2,3,4,5];
int[] dest = new int[7];
System.arraycopy(src, 0, dest, 2, 4);
最后dest的数组为 [0,0,1,2,3,4,0]