剑指offer---打印从1到最大的n位整数---JS版本实现

题目

输入数字n,按顺序打印从1到最大的n位十进制数。

输入一个3,则需要打印出0~999;输入一个4,则需要打印出0~9999

核心

n没有限制,如果不小心给成无穷大,如何处理。n的数值类型,所以采用字符串方式进行全排列

    function showNum(){
            var num = parseInt(document.getElementById("nLength").value);
            if (num <=0) return ;
            number ={};
            printOrder(number,num,0)
        }
        function printOrder(number, n, loc){
            if(loc == n) return;
            for(var i = 0; i <= 9; i++){
                number[loc] = ('' + i);
                if(loc == n - 1){
                    printNumber(number);
                }
                printOrder(number,n,loc + 1);
            }
        }
        function  printNumber(num){
            var arr = Object.values(num);
            var size = arr.length;
            var i = 0;
            while(i < size && num[i] == '0') //i < size在前,否则越界
                i++;
            if(i == size)//
                return;
           console.log(parseInt(arr.join("")))//打印的地方,即为全部的数字
        }

代码暂时没有详解,具体实现,请查看git页面(html打开即可实现)

https://github.com/Kristen-D/Algorithms/tree/master/algorithm/digitMaxnum

转载于:https://www.cnblogs.com/donglt-5211/p/10143595.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值