我得到一个包含无序连续数字的字符串数组(范围从0到n)
例如 - [7a, 1b, 2c, 0d, 6e, 5f, 3g, 4h]
我想按顺序将数字写入文件
后例:
0d
1b
2c
3g
{{1 }} {
{1}} {
{1}} {
{1}}
我试图找到一种方法来快速完成并且不占用太多空间
我发现了一种可以在O(n)空间复杂度和O(n)性能方面做到这一点的方法
(我创建一个包含n个单元格的数组,并将每个数字插入到他的单元格编号)
arr [cell] = cell
但我正在寻找一种更好的方法来做到这一点,如果你能提供帮助我会感激不尽。
由于
答案 0 :(得分:1)
由于数字是连续的,你根本不需要数组。
您只需要找到数组中的最小和最大元素。知道min
和max
后,您可以将范围内的数字写入文件。这仍然是O(n)时间,但没有额外的空间复杂性。如果min
总是0
,那么您只需要数组中最大的数字。
答案 1 :(得分:0)
由于数字是连续的,因此无需验证数组中是否存在,因此您可以使用sizeof(array)/sizeof(array[0])
来了解数组长度,然后您可以像这样执行for循环:< / p>
int writeNum(int* nums){
FILE *f = fopen("yourfile.txt");
if(f == NULL) return 0;
for(int n = sizeof(nums)/sizeof(nums[0]), i = 0; i < n; i++){
fprintf(f,"%d\n",i);
}
fclose(f);
return 1;
}