gpt4 book ai didi

c - 给定一个数组,返回其支配符出现的任何索引

转载 作者:太空宇宙 更新时间:2023-11-04 00:17:11 25 4
gpt4 key购买 nike

Dominator 是一个出现在数组中超过一半位置的值。例如在数组中:[3, 4, 3, 2, 3, -1, 3, 3]值 3 出现在 8 个位置中的 5 个位置。 5/8 > 0.5,所以 3 是支配者:在这个数组中,支配者出现在索引上:0、2、4、6、7。如何编写给定数组的函数返回其支配符出现的任何索引。如果没有支配者,该函数应返回 -1。

尝试使用 C 解决它:

int arrdominator(int *A,int N)
{
int i,j,idx=0,val=0,cnt=1;

//I thought I would sort the array and then cound the dominating value instances,
qsort(A,N,sizeof(A[0]),sort_fn_ascend);

for(i=0;i<(N-1);i++)
{
for(j=i+1;j<N;j++)
{
if(A[i] == A[j])
{
cnt++;

i++;
break;
}
}
}
}

但我无法找到在数组中找到支配值然后返回其索引的解决方案。

最佳答案

我不会为你解决这个问题,你应该真的自己解决这个问题,但这里有一些提示:

  • 首先,由于您的规范规定您必须返回索引的数组(或 -1),我建议您相应地更改函数的签名

  • 其次,您应该将任务分成几部分。第一部分(排序后):确定最长等号序列的长度(以及该序列的重复次数)。然后,测试序列是否长于 N/2。如果是,则找出该数字出现的索引并返回此结果。由于您将通过排序解决此问题,因此请确保保留原始数组的副本,因为您将需要它来确定原始索引。

  • 如果cnt 用于计算序列长度,则每次开始计算新序列时都必须将其重置为零。您将需要第二个变量 maxSequenceLength 来保持迄今为止找到的最长序列的长度,以及第三个变量 valOfMaxSequence

希望这对您有所帮助。

关于c - 给定一个数组,返回其支配符出现的任何索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9055911/

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