LeetCode数组-10(66)-数组表示的数加一
Posted 菜鸟更要虚心学习
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode数组-10(66)-数组表示的数加一相关的知识,希望对你有一定的参考价值。
思路:
只在digit数组的最后一位加一,如果加一产生进位则当前为减10并且修改进位变量使其在下一次循环的时候对下一位产生加一的影响,如果没有进位的产生直接break循环。
最后判断如果最高位有进位,在重新申请数组(比原来数组长一位),把第一位设置为1,其他的把上面的数组复制过来即可。
【正确代码】
1 class Solution { 2 public int[] plusOne(int[] digits) { 3 boolean carry = false;//设置进位 4 digits[digits.length - 1]++; 5 for (int i = digits.length - 1; i >= 0; i--) { 6 digits[i] = digits[i] + (carry ? 1 : 0); 7 if (digits[i] >= 10) { 8 carry = true; 9 digits[i] -= 10; 10 }else { 11 carry = false; 12 break; 13 } 14 } 15 //如果最高位有进位的话需要判断溢出 16 if (carry) { 17 int[] res = new int[digits.length + 1]; 18 res[0] = 1; 19 for (int i = 1; i < digits.length; i++) { 20 res[i] = digits[i]; 21 } 22 return res;//注意这里res是局部变量,不能直接返回 23 }else { 24 return digits; 25 } 26 } 27 }
复杂度分析:
时间空间都是O(n)吧。
以上是关于LeetCode数组-10(66)-数组表示的数加一的主要内容,如果未能解决你的问题,请参考以下文章