题目描述:
输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。
示例 1:
输入: n = 1
输出: [1,2,3,4,5,6,7,8,9]
说明:
用返回一个整数列表来代替打印
n 为正整数
思路:
1、这道题首先能够想到的就是,找到最大的n位数,然后依次打印从1到最大的n位数;
Java解法(最直观朴素解法):
class Solution {
public int[] printNumbers(int n) {
int maxNum = (int)Math.pow(10, n) - 1;
int[] ans = new int[maxNum];
for(int i = 1; i <= maxNum; i++)
{
ans[i-1] = i;
}
return ans;
}
}
思路:
2、但是这道题并没有确定n的范围,当n很大时,我们求得的最大n位数是否用整型(int)或者长整型(long)都会溢出,所以这道题我们要考虑大数问题。
3、接着我们就要考虑在发生溢出的情况下,如何去表示这个大数呢?一般最常用也是最简单的办法就是使用字符串或者数组来表示大数。
4、最终返回结果ans;
Java解法(字符串表示法):
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof