题目大意:输入十进制数组,组成一个数,在最末位+1,然后输出最后结果。例子如下:
法一:直接用类似大数加法的做法,最末位+1,然后输出最后结果,要注意的是,最后可能有进位,比如999的情况。代码如下(耗时1ms):
1 public int[] plusOne(int[] digits) { 2 int pos = digits.length - 1; 3 int flag = (digits[pos] + 1) / 10; 4 digits[pos] = (digits[pos] + 1) % 10; 5 pos--; 6 while(pos >= 0) { 7 int num = digits[pos] + flag; 8 digits[pos] = num % 10; 9 flag = num / 10; 10 pos--; 11 } 12 if(flag == 0) { 13 return digits; 14 } 15 int[] res = new int[digits.length + 1]; 16 res[0] = 1; 17 for(int i = 0; i < digits.length; i++) { 18 res[i + 1] = digits[i]; 19 } 20 return res; 21 }