URL
链接:https://leetcode-cn.com/problems/lexicographical-numbers/
题目
分析
源码
工程结构
.
└── main.c
源码文件
/* main.c */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int * lexical_order(int n , int * return_size){
int * ret = (int *)malloc(sizeof(int) * n);
int number = 1;
memset(ret, '\0', sizeof(int) * n);
for (int i = 0; i < n; i++){
ret[i] = number;
if ( number * 10 <= n ){
number *= 10;
}else{
while (number % 10 == 9 || number + 1 > n){
number /= 10;
}
number++;
}
}
*return_size = n;
return ret;
}
int main(){
int return_size = 0;
int * ret = NULL;
int n = 15;
for (int i = 1; i <= n; ++i){
ret = lexical_order(i, &return_size);
printf("n = %d, ret = [",i );
for (int j = 0; j < return_size; j++){
printf(" %d ",ret[j]);
}
printf("]\n");
}
return 0;
}
LOG参考
n = 1, ret = [ 1 ]
n = 2, ret = [ 1 2 ]
n = 3, ret = [ 1 2 3 ]
n = 4, ret = [ 1 2 3 4 ]
n = 5, ret = [ 1 2 3 4 5 ]
n = 6, ret = [ 1 2 3 4 5 6 ]
n = 7, ret = [ 1 2 3 4 5 6 7 ]
n = 8, ret = [ 1 2 3 4 5 6 7 8 ]
n = 9, ret = [ 1 2 3 4 5 6 7 8 9 ]
n = 10, ret = [ 1 10 2 3 4 5 6 7 8 9 ]
n = 11, ret = [ 1 10 11 2 3 4 5 6 7 8 9 ]
n = 12, ret = [ 1 10 11 12 2 3 4 5 6 7 8 9 ]
n = 13, ret = [ 1 10 11 12 13 2 3 4 5 6 7 8 9 ]
n = 14, ret = [ 1 10 11 12 13 14 2 3 4 5 6 7 8 9 ]
n = 15, ret = [ 1 10 11 12 13 14 15 2 3 4 5 6 7 8 9 ]
源码概述
没有什么特别要说明了,了解一下“字典序”就可以了。
小结
“字典序”百度百科:https://baike.baidu.com/item/%E5%AD%97%E5%85%B8%E5%BA%8F/7786229?fr=aladdin