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进行每位运算,和下面的代码差距在于没有过多的去想 暗示的一些条件。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public int[] plusOne(int[] digits) {
if(digits == null || digits.length == 0) return null;
int carry = 1;
for(int i = digits.length-1;i >= 0; i--){
digits[i] += carry;
if(digits[i] >= 10){
digits[i] -= 10;
carry = 1;
}else{
carry = 0;
break;
}
}
if(carry == 1 ){
int[] tmp = new int[digits.length + 1];
for(int i = 0; i < digits.length; i++){
tmp[i+1] = digits[i];
}
tm 大专栏 66 plus onep[0] = 1;
return tmp;
}
return digits;
}
2 most votes
根据 hello_today_ 和zezedi 改的。 算法:从后往前遍历,如果数字为9,那么则该数字变为0,继续遍历下一个数字,如果不是9,那么该数字加1,返回digits; 只有数字是9 9 9 这类的才会产生新的进位。注意到除了进位,其他都为0。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public int[] plusOne(int[] digits) {
if(digits == null || digits.length == 0) return null;
for(int i = digits.length - 1; i >= 0; i--){
if(digits[i] == 9){
digits[i] = 0;
}else{
digits[i]++;
return digits;
}
}
int[] result = new int[digits.length+1];
result[0] = 1;
return result;
}