题目
数组数字你,按顺序打印出从1到最大n位十进制数。比如输入3,则打印出1、2、3…999
这个题目大家看着其实很简单,而且很快就能写出如下的代码:1
2
3
4
5
6
7
8
9
10void printNumber(int n){
int number = 1;
int i = 0;
while(i++<n){
number *= 10;
}
for (int i = 0; i<number;i++){
printf("%d",i);
}
}
这样写看着也能实现,但是有个问题就是如果n很大,超过了整型类型的最大数值范围呢??
所以我们最好用字符串来解此算法。
思路
我们定义一个n+1的字符串,最后一位为’\0’结束标志位,每位的范围为’0’-‘9’,然后对字符串进行+1计算。如果被加位为’9’则进1位,如此循环。
实现
1 | bool increment(char *number){ |
感想
连着看了2个星期的数据结构和算法了。一边在看书,一边在写算法。不得不说这个过程挺耗脑子的。每一个算法题自己一开始想到的可能不是最优方法,然后根据书上最优方法进行修改,如此循环。
本来计划是一个季度,3个月的时间会重点研究数据结构和算法,2个多星期体验开来,到自己刷完定的目标的算法题是有点慢,但是万事开头难吧,希望自己能够坚持下来达到自己的目标。