gpt4 book ai didi

arrays - 识别一组数组中最小数据对应的索引

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:34:27 24 4
gpt4 key购买 nike

我相信这是一个微不足道的算法问题,但我似乎无法找到高效而优雅的解决方案。

我们有 3 个 int 数组(Aa、Ab、Ac)和 3 个游标(Ca、Cb、Cc),它们指示相应数组中的索引。我想识别并递增指向最小值的光标。如果这个游标已经在数组的末尾,我将排除它并增加指向第二小值的游标。如果只有 1 个游标不在数组的末尾,我们增加这个。

我能想到的唯一解决方案很复杂和/或不是最优的。例如,我总是以一个巨大的 if...else... 结束

有没有人看到这个问题的巧妙解决方案?

我正在使用 C++ 进行编程,但可以随意使用伪代码或您喜欢的任何语言进行讨论。

谢谢

最佳答案

伪java代码:

int[] values = new int[3];
values[0] = aa[ca];
values[1] = ab[cb];
values[2] = ac[cc];
Arrays.sort(values);

boolean done = false;
for (int i = 0; i < 3 && !done; i++) {
if (values[i] == aa[ca] && ca + 1 < aa.length) {
ca++;
done = true;
}
else if (values[i] == ab[cb] && cb + 1 < ab.length) {
cb++;
done = true;
}
else if (cc + 1 < ac.length) {
cc++;
done = true;
}
}
if (!done) {
System.out.println("cannot increment any index");
stop = true;
}

本质上,它执行以下操作:

  1. aa[ca]ab[cb]ac[cc]<初始化数组values/

  2. 排序

  3. 扫描 values 并在可能的情况下(即不在数组末尾)增加相应值的索引

我知道,排序最多是 O(n lg n),但我只对包含 3 个元素的数组进行排序。

关于arrays - 识别一组数组中最小数据对应的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5271285/

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