面试题17. 打印从1到最大的n位数

2020-02-27  本文已影响0人  周英杰Anita

题目描述:

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

示例 1:

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

说明:

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

思路:

1、这道题首先能够想到的就是,找到最大的n位数,然后依次打印从1到最大的n位数;

Java解法(最直观朴素解法):

class Solution {
    public int[] printNumbers(int n) {
        int maxNum = (int)Math.pow(10, n) - 1;
        int[] ans = new int[maxNum];
        for(int i = 1; i <= maxNum; i++)
        {
            ans[i-1] = i;
        }
        return ans;
    }
}

思路:

2、但是这道题并没有确定n的范围,当n很大时,我们求得的最大n位数是否用整型(int)或者长整型(long)都会溢出,所以这道题我们要考虑大数问题。
3、接着我们就要考虑在发生溢出的情况下,如何去表示这个大数呢?一般最常用也是最简单的办法就是使用字符串或者数组来表示大数。
4、最终返回结果ans;

Java解法(字符串表示法):


来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof

上一篇下一篇

猜你喜欢

热点阅读