剑指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

posted @ 2018-12-19 15:31  donglt  阅读(236)  评论(0编辑  收藏  举报