美文网首页
面试题17. 打印从1到最大的n位数

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

作者: 周英杰Anita | 来源:发表于2020-02-27 15:17 被阅读0次

    题目描述:

    输入数字 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

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/gbsthhtx.html