最后更新
二刷
12-Jan-2017
看了一刷的做法,发现自己二刷做的真是丑陋。。重新按一刷思路做了一下。。
还是从右往左找第一个不是9的数位。。都是9的话答案就是1000000000000这= =
public class Solution {
public int[] plusOne(int[] digits) {
int i = 0;
for (i = digits.length - 1; i >= 0; i --) {
if (digits[i] != 9) break;
}
if (i == -1) {
int[] res = new int[digits.length+1];
res[0] = 1;
for (i = 1; i < res.length; i++) {
res[i] = 0;
}
return res;
} else {
digits[i] ++;
for (i = i + 1; i < digits.length; i++) {
digits[i] = 0;
}
return digits;
}
}
}
一刷
03-Nov-2016
从右往左找第一个不是9的数位,然后分情况讨论。
Time: O(n)
Space: O(1)
public class Solution {
public int[] plusOne(int[] digits) {
int i = digits.length - 1;
for (i = digits.length - 1; i >= 0; i--) {
if (digits[i] != 9) break;
}
if (i >= 0) {
digits[i]++;
for (int j = i+1; j < digits.length; j++) {
digits[j] = 0;
}
return digits;
} else {
int[] res = new int[digits.length+1];
for (int j = 1; j < digits.length; j++) {
res[j] = 0;
}
res[0] = 1;
return res;
}
}
}