首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

打印1到最大的n位数

这道题是面试过可能会遇到的手写代码题。如n为3时,那么需要打印1到999。需要注意的是当输入的n很大时,最大的n位数是不能通过int或者long long int来表示,此时可以使用字符数组来存储。...思路一: 1到n位最大数值采用字符数组存储。数值的高位存储在字符数组的低地址位。...思路二: 换思路,n位所有十进制数其实就是n个0-9的数全排列的过程,只是排在前面的0我们不打印出来。 全排列可以用递归去写,递归结束条件是我们已经设置了数字的最后一位。...; } 测试用例 功能测试(输入1、2、3……) 特殊输入测试(输入-1,0)。...总结: 如果面试题是关于n位的整数并且没有限定n的取值范围,或者是输入任意大小的整数,那么这个题目很有可能是需要考虑大数问题。字符串是一个简单、有效的表示大数的方法。

37510
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    打印从1到最大的n位数

    经过一番调整走出来了,心态调整好了,后续将保持正常的学习进度 前言 有一个数字n,我们需要按照顺序输出从1到最大的n位十进制数,例如:n = 3,则输出1、2、3...一直到最大的3位数999。...1到最大值-1位置的值,就是n位数的最大值 for (let i = 1; i < maxNumber; i++) { console.log(i); } } } 这段代码乍一看没啥问题...,当n = 3的时候可以正常输出1~999之间的所有值,但是题目中n并没有规定具体范围,当n很大的时候,超出了js可以表示的最大范围,代码将无法运行。...如果我们在数字前面补0,就会发现n位所有十进制数其实就是n个从0~9的全排列。也就是说,只要我们把数字的每一位都从0~9排列一遍,就得到了所有的十进制数。...全排列使用递归的方式很容易表达,数字的每一位都只可能是0~9中的一个数,然后设置下一位。递归结束的条件就是我们已经设置了数字的最后一位。

    68930

    统计0到n之间1的个数(经典,详解)

    问题描述 给定一个十进制整数N,求出从1到N的所有整数中出现”1”的个数。 例如:N=2时 1,2出现了1个 “1” 。 N=12时 1,2,3,4,5,6,7,8,9,10,11,12。...出现了5个“1”。 方法一 暴力求解 最直接的方法就是从1开始遍历到N,将其中每一个数中含有“1”的个数加起来,就得到了问题的解。...由此我们发现,个位数出现1的次数不仅和个位数有关,和十位数也有关,如果个位数大于等于1,则个位数出现1的次数为十位数的数字加1;如果个位数为0,个位数出现1的次数等于十位数数字。...而十位数上出现1的次数也不仅和十位数相关,也和个位数相关:如果十位数字等于1,则十位数上出现1的次数为个位数的数字加1,假如十位数大于1,则十位数上出现1的次数为10。  ...4位数,5位数,推导出下面一般情况:  假设N,我们要计算百位上出现1的次数,将由三部分决定:百位上的数字,百位以上的数字,百位一下的数字。

    1.1K80

    【剑指Offer】打印从1到最大的n位数

    题目: 输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。...示例 1: 输入: n = 1 输出: [1,2,3,4,5,6,7,8,9] 题解: 吐槽一下自己,最初自己在思考的时候,一直在思考当n位数的数字时,输出 10 ^(n-1) + (1~9),然后采用递归实现...言归正传,接下来,说一下思路: 题目中要求打印出最大的n位数的数字,1位是9,2位是99,3位是999,同理可推出,最大的数字可表示为: 10^(n) - 1 因为要打印出1 ~ 最大数字,也就是说 最大数字即为数组长度...代码: class Solution { public int[] printNumbers(int n) { int end = (int)Math.pow(10,n) - 1...; int[] array = new int[end]; for (int i = 0;i < end;i ++) { array[i] = i + 1;

    46120

    LeetCode31|打印从1到最大的n位数

    1,问题简述 输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。 比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。...2,示例 输入: n = 1 输出: [1,2,3,4,5,6,7,8,9] 说明: 用返回一个整数列表来代替打印 n 为正整数 3,题解思路 计算数据,数据加载 4,题解程序 public...class PrintNumbersTest { public static void main(String[] args) { int n = 1; int[...(n == 0) { return new int[0]; } double v = Math.pow(10, n)-1; int...5,总结 这道题算是api的使用方式了,数据的计算,其实自己也没有什么好说的了,但是由于文章的字数必需要达到300字,所有有些时候就只好在这里唠会嗑了,因为文章的原创对于喜欢输出内容的人来说还是比较重要的一点

    40220

    剑指offer-打印从 1 到最大的 n 位数

    题目 输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数即 999。...输入: n = 1 输出: [1,2,3,4,5,6,7,8,9] 解题思路(一) 找到最大数number的值,计算公10的n次方-1; 直接遍历循环number; private void printMaxNumer...解题思路(二) 基于上面思路,这次可以使用字符串形式打印从1到最大n位数 我们发现n位数的每一位数其实就是0~9的全排列 递归条件就是我迭代到最低位就是个位,这个时候就应该输出数字 如果我们未满n位的数字前面补...0,在打印的时候,前面的0不要打印出来 上图是简单的基本思路,边看代码边看图,有助于理解代码,完整代码如下 public class Soultion { public void printToMaxofNDigits...printToMaxofNDigits(number, digit + 1); } } //这里主要的打印以及防止打印出前面的0,如[0,0,1

    87620

    打印从1到最大的n位数

    打印从 1 到最大的 n 位数[1] 描述 输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。...示例 1: 输入: n = 1输出: [1,2,3,4,5,6,7,8,9] 说明: 用返回一个整数列表来代替打印 n 为正整数 解题思路 n其实是要打印出的数字的最大值+1的数中所含0的个数,即假设n...int类型数值-1则为最后要返回的数组的大小; 然后将1到最大的n位数存放在数组中即可; 实现 package math; import java.util.Arrays; /** * Created...(n))); } /** * 打印从1到最大的n位数 * @param n * @return 从1到最大的n位数组成的数组 */ public int[] printNumbers...打印从1到最大的n位数: https://leetcode-cn.com/problems/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof/

    59720
    领券