剑指 Offer 17. 打印从1到最大的n位数

题目:

思路:

【1】这道题本身直接用暴力的方式好像都能过,只要计算出最大值可以用函数的话就:(int)(Math.pow(10, n) - 1);

【2】但是这里其实没有考虑大数,就是超出Int范围之类的这种,这种就需要使用字符串。

代码展示:

普通遍历方法:

//时间1 ms击败73.8%
//内存49.2 MB击败37.31%
class Solution {
    public int[] printNumbers(int n) {
        int sum = 0;
        for(int i = 0; i < n; i++){
            sum = sum*10+9;
        }
        int[] res = new int[sum];
        for (int i = 0; i < sum; i++){
            res[i] = i+1;
        }
        return res;
    }
}

 

posted @ 2023-02-13 18:09  忧愁的chafry  阅读(8)  评论(0编辑  收藏  举报