方法一:
思路:
(1)从后往前,判断每一位。
(2)若该位小于9,则原数组的该位直接加一,返回原数组即可。
(3)一旦找到某一位等于9,则原数组的该位置为0,并从该位的前一位开始继续查找小于9的那一位,再查找过程中将原数组的对应位置为0,若没找到小于9的那一位,则新建一个长度为原数组长度加一的数组result,将其第一位置为1后返回新数组即可,否则将找到的原数组的该位直接加一,跳出循环,返回原数组。
public class Solution {
public int[] plusOne(int[] digits) {
int flag = 0;
int len = digits.length;
for (int i = len - 1; i >= 0; i--) {
if (digits[i] < 9) {
digits[i] = digits[i] + 1;
return digits;
}
else {
digits[i] = 0;
int j = i - 1;
for (; j >= 0 && digits[j] == 9; j--)
digits[j] = 0;
if (j < 0) {
int[] result = new int[len + 1];
result[0] = 1;
return result;
}
digits[j] = digits[j] + 1;
break;
}
}
return digits;
}
}
Runtime:0ms
方法二:
思路:
(1)从后往前,判断每一位,若是9,则将其置为0,若不是9,则对其加1,然后返回即可。
(2)若全是9,则新建一个长度为原数组长度加一的数组result,将其第一位置为1后返回新数组即可。
public class Solution {
public int[] plusOne(int[] digits) {
int len = digits.length;
for (int i = len - 1; i >= 0; i--) {
if (digits[i] < 9) {
digits[i]++;
return digits;
}
else
digits[i] = 0;
}
int[] result = new int[digits.length + 1];
result[0] = 1;
return result;
}
}
Runtime:0ms