offer 17 打印从1到最大的n位数

打印从1到最大的n位数

image.png

题目分析

首先得定义一个数组,而后根据输入的n来判断数组的长度,而后给数组元素赋值算法

题解

image.png
实际上,本题的主要考点是大数越界状况下的打印。须要解决如下三个问题:数组

  • 表示大数的变量类型:
    不管是 short / int / long ... 任意变量类型,数字的取值范围都是有限的。所以,大数的表示应用字符串 String 类型。
  • 生成数字的字符串集:
    image.png
  • 递归生成全排列
    基于分治算法的思想,先固定高位,向低位递归,当个位已被固定时,添加数字的字符串。例如当 n = 2n=2 时(数字范围 1 - 991−99 ),固定十位为 00 - 99 ,按顺序依次开启递归,固定个位 00 - 99 ,终止递归并添加数字字符串。
  • image.png

题解

image.png
没看懂参考spa

相关文章
相关标签/搜索