gpt4 book ai didi

c - 打印序列中出现次数最多的数

转载 作者:太空宇宙 更新时间:2023-11-03 23:27:46 29 4
gpt4 key购买 nike

最近遇到这样的问题

编写一个程序来读取一个包含 N 个整数的序列并打印出序列中出现的最大次数。约束条件1 <= N <= 10000整数将在 [-100,100] 范围内

我写了下面的代码:

main()
{int arr[201],max=0,maxelement,n,i,num;
int t;
scanf("%d",&n);
int *storenum=(int *)malloc(sizeof(int)*n);
for(i=0;i<201;i++)
{
arr[i]=0;
}
for(i=0;i<n;i++)
{
scanf("%d",&num);
storenum[i]=num;
if(num<=100 && num>=-100)
{
arr[num+100]=arr[num+100]+1;

}
}
for(i=0;i<n;i++)
{
int t=storenum[i]+100;


if(arr[t]>max)
{ maxelement=storenum[i];
max=arr[t];}

}

printf("\n\n%d",maxelement);

getch();
}

现在我认为这段代码没有经过优化......我想要一个时间和空间复杂度更低且更好的解决方案。

最佳答案

您不必第二次遍历所有 N 项,只需遍历 201 个计数以寻找最大的。

关于c - 打印序列中出现次数最多的数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22852399/

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