gpt4 book ai didi

c - 查找 1 到 100 之间的缺失数字

转载 作者:太空宇宙 更新时间:2023-11-04 06:40:12 24 4
gpt4 key购买 nike

这个问题之前已经用下面的代码在 SO 上被问过

find3missing(int* array)
{
int newarray[100] = {0};
For i = 0 to 99
++newarray[array[i]] ;
For i = 0 to 99
If newarray[i] != 1
Cout << “the missing number is ” << i+1 << endl ;
}

但是当我检查这段代码时,它似乎不起作用。假设我有一个 {1,2,6} 数组。输出应该是 3,4,5 但使用上面的代码我得到的是 1,4,5,6。下面是我对数组大小为 6 的伪代码的实现。

main()
{
int a[6]={1,2,6};
int tmp[6]={0},i;
for(i=0;i<6;i++)
{
++tmp[a[i]];
}
for(i=0;i<6;i++)
{
if(tmp[i]!=1)
{
printf("%d",i+1);
}
}
}

这是正确的代码吗?

最佳答案

++newarray[array[i]]应该是 ++newarray[array[i] - 1] .这是因为您对 1-100 数字的序列感兴趣,所以没有 0,但是 C 数组是基于 0 的。如果你再看看 cout : the missing number is ” << i+1在这里,您通过加 1 来“取消移动”数字。

还有一个问题:你应该传递array的元素个数。 ,类似于:

find3missing(int* array, int length) { 
int newarray[100] = {0};

for (int i = 0; i < length; i++) {
++newarray[array[i] - 1] ;
}

关于c - 查找 1 到 100 之间的缺失数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9632313/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com