49.打印從1到最大的n位數
輸入數字 n,按順序打印出從 1 到最大的 n 位十進制數。比如輸入 3,則打印出 1、2、3 一直到最大的 3 位數 999。
示例 1:
輸入: n = 1
輸出: [1,2,3,4,5,6,7,8,9]
思路
要打印的範圍其實1到是10的n次冪-1。求冪,可以使用快速冪加快速度。將時間複雜度降低到O(logN)
class Solution {
public int[] printNumbers(int n) {
if(n<1)
{
return new int[0];
}
int res=1;
int x=10;
//整數快速冪
while(n>0)
{
if((n&1)==1)
{
res=res*x;
}
x=x*x;
n>>=1;
}
int[] arr=new int[res-1];
int index=0;
//打印結果集
for(int i=1;i<res;i++)
{
arr[index++]=i;
}
return arr;
}
}