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

题面

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

示例

示例 1:

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

限制

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

思路

简简单单for循环。

代码

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