输入数字 n
,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。
示例 1:
输入: n = 1 输出: [1,2,3,4,5,6,7,8,9]
说明:
- 用返回一个整数列表来代替打印
- n 为正整数
Related Topics
- 数组
- 数学
著书三年倦写字,如今翻书不识志,若知倦书悔前程 ,无如渔樵未识时
输入数字 n
,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。
示例 1:
输入: n = 1 输出: [1,2,3,4,5,6,7,8,9]
说明:
打表
简单打表
class Solution {
final static int [] sizeTable = { 9, 99, 999, 9999, 99999, 999999, 9999999,
99999999, 999999999, Integer.MAX_VALUE };
public int[] printNumbers(int n) {
int max = sizeTable[n-1];
int[] arr = new int[max];
int i = -1;
while (++i < max){
arr[i] = i + 1;
}
return arr;
}
}
这个sizeTable
在java基础类库java.lang.Integer
中就有,挺好用的
final static int [] sizeTable = { 9, 99, 999, 9999, 99999, 999999, 9999999,
99999999, 999999999, Integer.MAX_VALUE };
// Requires positive x
static int stringSize(int x) {
for (int i=0; ; i++)
if (x <= sizeTable[i])
return i+1;
}
发表评论