zoukankan      html  css  js  c++  java
  • 打印1到最大的n位数

    题目:输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,则输出1、2、3一直到最大的3位数即999。

    很容易就能写一个这样简单的代码

      static void solution(int n) {
        int number=1;
        int i=0;
        while(i++<n) {
          number *= 10;
        }
        for(i=1; i<number; i++) {
        System.out.println(i);
        }
      }

    求出最大值是多少,然后依次输出比它小的所有数就行。这样的问题在于万一n很大,导致最大的数比int的范围大就会出错了。

    我使用的是建立一个n大小的int数组,使用数组来表示一个大数。

        static Boolean solution(int n){
            if(n <= 0){
                return false;
            }
            int[] result = new int[n];
            int[] finallyResult = new int[n];
            Arrays.fill(result,0);
            Arrays.fill(finallyResult,9);
            //如果达到[9,9,9,9...]就是到最后的结果了
            while (!Arrays.equals(result,finallyResult)){
                //模拟加1
                Increment(result,result.length);
                //打印数字
                print(result);
            }
            return false;
        }

    其中还建立了一个所有元素都是9的数组,用作当边界。

        static void Increment(int[]result, int lastSub){
            lastSub--;
            if(result[lastSub] == 9 ){
                //进位计算
                result[lastSub] = 0;
                Increment(result, lastSub);
            }else{
                result[lastSub]++;
            }
        }

    这是进行加1操作的函数,如果将要加1的元素为9就代表这需要进位,这里使用递归解决。

        static void print(int[]result){
            //TAG是否打印0的标志
            int TAG = 0;
            //第一个不是0的数字之前的0都不打印
            for(int i = 0; i < result.length; i++){
                if(result[i] != 0){
                    TAG = 1;
                }
                if(TAG == 0 && result[i] == 0){
                    continue;
                }
                System.out.print(result[i]);
            }
            System.out.println();
        }

    这是用于输出的函数。

  • 相关阅读:
    GET请求和POST请求的本质区别
    go切片的Add与Del
    滚动到指定位置的问题
    promise---批量调用接口,等待所有的请求发完
    this argument
    html2canvas截图 下载图片
    数组合并去重
    vue项目踩坑
    关于java中的栈和堆
    用python实现一个最简单版本的mysql数据库连接池
  • 原文地址:https://www.cnblogs.com/xxbbtt/p/7993364.html
Copyright © 2011-2022 走看看