微信公众号:路人zhang
扫码关注微信公众号

回复“面试手册”,获取本站PDF版

回复“简历”,获取高质量简历模板

回复“加群”,加入程序员交流群

回复“电子书”,获取程序员类电子书

当前位置: 算法 > 剑指offer > 剑指offer 17.打印从1到最大的n位数

题目描述

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

示例 1:

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

说明:

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

算法

(模拟) O(10^n)

模拟输出从 1 \sim 10^n – 1,求 10^n 可以用库函数 pow(x, y)

进阶:可以考虑大数如何处理。

时间复杂度

O(10^n)

空间复杂度

O(10^n)

C++ 代码

class Solution {
public:
    vector<int> printNumbers(int n) {
        vector<int> res;
        for (int i = 1; i < pow(10, n); i ++ )  res.push_back(i);
        return res;
    }
};

Java 代码

import java.util.ArrayList;
import java.util.List;

public class Solution {
    public int[] printNumbers(int n) {
        List<Integer> res = new ArrayList<>();
        for (int i = 1; i < Math.pow(10, n); i ++ ) {
            res.add(i);
        }
        return res.stream().mapToInt(Integer::intValue).toArray();
    }
}

Python 代码

class Solution:
    def printNumbers(self, n: int) -> List[int]:
        res = []
        for i in range(1, 10 ** n):
            res.append(i)
        return res

本文由读者提供Github地址:https://github.com/tonngw


点击面试手册,获取本站面试手册PDF完整版