【题解】剑指Offer-17 打印从1到最大的n位数

打印从1到最大的n位数(剑指Offer-17)

题面

输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。

示例

示例 1:

1
2
输入: n = 1
输出: [1,2,3,4,5,6,7,8,9]

限制

  • 用返回一个整数列表来代替打印
  • n 为正整数

思路

简简单单for循环。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
int pow(int a, int b){
int res = 1;
while(b){
if(b&1) res*=a;
a *= a;
b >>= 1;
}
return res;
}
public:
vector<int> printNumbers(int n) {
int last = pow(10,n)-1;
vector<int> ans(last);
for(int i=0; i<last; i++){
ans[i] = i+1;
}
return ans;
}
};
收起代码