题目:
代码:
class Solution {
public int[] plusOne(int[] digits) {
if(digits.length==1 && digits[0]<1){
digits[0]+=1;
return digits;
}
boolean flag=false;
for(int i=digits.length-1;i>=0;i--){
if(digits[i]==9){
if(i==0) flag=true;
digits[i]=0;
}else{
digits[i]+=1;
break;
}
}
int[] di=new int[digits.length+1];
if(flag){
di[0]=1;
for(int j=0;j<digits.length;j++){
di[j+1]=digits[j];
}
}
return flag==true?di:digits;
}
}
略微繁琐,参考官方代码:
意思为:当末尾数字不为9 时 直接+1即可
如果后面几个为9 那么找到不为9的数字 然后对i后面的数字化为0处理
太秒了
class Solution {
public int[] plusOne(int[] digits) {
int n = digits.length;
for (int i = n - 1; i >= 0; --i) {
if (digits[i] != 9) {
++digits[i];
for (int j = i + 1; j < n; ++j) {
digits[j] = 0;
}
return digits;
}
}
// digits 中所有的元素均为 9
int[] ans = new int[n + 1];
ans[0] = 1;
return ans;
}
}
评论区大佬解法:
官方给的是 先找到不为9 的数字
而大佬给的是 用对10取余来计算
9+1 % 10=0
非9%10=原数
秒啊秒啊!
class Solution {
public int[] plusOne(int[] digits) {
int len = digits.length;
for (int i = len - 1; i >= 0; i--) {
digits[i] = (digits[i] + 1) % 10;
if (digits[i] != 0) {
return digits;
}
}
digits = new int[len + 1];
digits[0] = 1;
return digits;
}
}