题目描述(简单难度)

数组代表一个数字,[ 1, 2, 3 ] 就代表 123,然后给它加上 1,输出新的数组。数组每个位置只保存 1 位,也就是 0 到 9。

解法一 递归

先用递归,好理解一些。

时间复杂度:O(n)。

解法二 迭代

上边的递归,属于尾递归,完全没必要压栈,直接改成迭代的形式吧。

  1. //从最低位遍历
  2. for (int i = digits.length - 1; i >= 0; i--) {
  3. if (digits[i] < 9) {
  4. digits[i] += 1;
  5. }
  6. //否则的话置为 0
  7. digits[i] = 0;
  8. //最高位如果置为 0 了,说明最高位产生了进位
  9. int[] ans = new int[digits.length + 1];
  10. ans[0] = 1;
  11. digits = ans;
  12. }

时间复杂度:O(n)。

空间复杂度:

添加好友一起进步~

如果觉得有帮助的话,可以点击 给一个 star 哦 ^^