长大后想做什么?做回小孩!

0%

LeetCode——加一

NO.66 加一 简单

83UxmV.png

这个题的题干给的很迷,不知道是不是翻译的问题。。。

思路一:遍历 很容易想到,+1的结果最大就是10,如果是10就进位当前位置剩余0。

只需要注意”9”、”99”、”999”。。。的全9情况就好了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public int[] plusOne(int[] digits) {
for (int i = digits.length-1; i >= 0; i--) {
//当前位是否是9,不是9+1返回即可
if (digits[i]!=9){
digits[i]++;
return digits;
}
//当前位是9,+1进位剩余0
digits[i]=0;
}
//走到这里说明全是9,新建长度+1数组,最高位是1其余都是0即可
int[] ans=new int[digits.length+1];
ans[0]=1;
return ans;
}

时间复杂度:O(n)


本人菜鸟,有错误请告知,感激不尽!

更多题解和学习记录博客:博客github