输入数字 n
,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。
方法一:不考虑大数问题
假设最大的n位数没有超过int的存储范围。
1 | class Solution { |
上述方法在计算最大的n位数时,需要进行n次循环,我们可以使用缓存来优化该操作:
1 | class Solution { |
复杂度分析:时间复杂度为$O(10^n)$,空间复杂度为O(1)。
方法二:模拟加法
1 | import java.util.Arrays; |
复杂度分析:时间复杂度为$O(n \times 10^n)$,空间复杂度为O(n)。
方法三:递归
1 | class Solution { |
复杂度分析:时间复杂度为$O(10^n)$,空间复杂度为O(n)。