gpt4 book ai didi

algorithm - 在具有边界的整数数组中查找重复项

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:15:46 25 4
gpt4 key购买 nike

下面是我写的问题描述和算法。有什么可以改进这个算法的吗?

给定一个大小未知的整数数组,只包含 0 到 30 之间的数字,编写一个函数返回一个包含所有重复项的整数数组。

int[] findDupes(int[] array) {
int[] found = new int[30];
int[] dupes = new int[30];
int dupesCount = 0;
for (int i = 0; i < array.length; i++) {
if (found[array[i]] <= 1) {
found[array[i]]++;
}else{
continue;
}
if(found[array[i]] > 1){
dupes[dupesCount++] = array[i];
if (dupesCount == 30)
break;
}
}
if (dupesCount == 0)
return new int[0];
return dupes;
}

我假设运行此算法的最佳情况是 n 或 30,以较低者为准运行此算法的最坏情况是 n,因为我必须扫描整个数组才能找到重复项。有什么意见吗?

最佳答案

你的想法是对的,但问问你自己,这个 block 到底是做什么的

    if(found[array[i]] > 1){
dupes[dupesCount++] = array[i];
if (dupesCount == 30)
break;
}

什么时候触发?

使用包含 1000 次出现 0 的数组的几个示例遍历您的代码。

你到底要返​​回什么?为什么需要特殊情况 0。

最好的情况下运行时间也将大于 30。使其在到达终点之前停止的最小输入是多少?

关于algorithm - 在具有边界的整数数组中查找重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3434961/

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