剑指offer第12题打印从1到n位数以及大整数加法乘法

Posted zqlucky

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer第12题打印从1到n位数以及大整数加法乘法相关的知识,希望对你有一定的参考价值。


方法一:
1)在字符串操作中给一个整形数字加(字符0)就是把它转化为字符,当然给一个字符减去(字符0)就可以把它转化为数字了;如果确实是最后一位字符那仫就把该数字加1( 需要注意的是我们每次都是从最后一个字符开始加起)到这里我们就不得不考虑加法的进位了,只有当字符对应的数字加到10或者比10大时我们需要进位,否则就直接将该数字转化为字符存储到对应字符的位置中去; 在字符所转化的数字进位中不得不考虑的就是如果此时已经是第一个字符了那仫还需要进位吗?当然不需要否则就溢出了;当然如果是普通的情况我们就只需要将该位对应的数字减去10并将进位信号置为1可以了 ;
     2).如何输入呢?直接用printf?这就又掉入面试官的陷阱里去了这是面试官设置的第二个陷阱,我们知道在上述思路中当数字不够n位时我们是在前面几位补零,如果我们直接输出,那仫就把前面的零也一起输出了,这当然不符合我们的实际了, 所以这里也是值得我们注意的一个关键点;
 
 
 
 

方法二:将问题转换成数字排列

我们把问题换个思路考虑,会发现n位所有十进制数其实就是n个从0到9的全排列。也就是说,我们把数字的每一位都 从0到9排列一遍,就可以得到所有的十进制数。只是在打印的时候,排在数字前面的0不打印出来而已。

全排列用递归很容易表达,数字的每一位都可能是0~9中的一个数,然后设置下一位,递归结束的条件是我们已经设置好了数字的最后一位。

以上是关于剑指offer第12题打印从1到n位数以及大整数加法乘法的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode | 面试题17. 打印从1到最大的n位数剑指OfferPython

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

乱序版 ● 剑指offer每日算法题打卡题解——分治算法(题号17,14)

剑指 Offer 17. 打印从1到最大的n位数 的详细题解

剑指 Offer 17. 打印从1到最大的n位数

剑指 Offer 17. 打印从1到最大的n位数