数学:
c++
class Solution {
public:
vector<int> printNumbers(int n) {
int m =0 ;
vector<int> res;
for(int i=0; i<n; i++){
m += 9*pow(10,i);
} // n=1,m=9; n=2,m=99; n=3,m=999... m = 9x10^0 + 9x10^1 + ... +9x10^n-1
for(int i=1; i<=m; i++){
res.push_back(i);
}
return res;
}
};
简洁:m = 10^n −1
9 = 10^1 −1
99 = 10^2 −1
999 = 10^3 −1
class Solution {
public:
vector<int> printNumbers(int n) {
int m = pow(10,n)-1 ;
vector<int> res;
for(int i=1; i<=m; i++){
res.push_back(i);
}
return res;
}
};
python
return list(range(1, 10 ** n))
大数打印 全排列解法:
无论是 short / int / long … 任意变量类型,数字的取值范围都是有限的。因此,大数的表示应用字符串 String 类型
python
class Solution:
def printNumbers(self, n: int) -> List[int]:
def dfs(index, num, digit):
if index == digit:
res.append(int(''.join(num)))
return
for i in range(10):
num.append(str(i))
dfs(index + 1, num, digit)
num.pop()
res = []
for digit in range(1, n + 1):
for first in range(1, 10):
num = [str(first)]
dfs(1, num, digit)
return res