gpt4 book ai didi

arrays - 在 O(n*log(n)) 中找到一对具有给定和和乘积的数组元素

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

令 A 为 n 个正整数数组,k 为给定整数。

我正在寻找算法来查找数组中是否有一对元素使得A[i] * A[j] == kA[i] == A[j] + k。如果存在这样的一对,算法应该返回它们的索引。

这是一个家庭作业,我们被告知有一个 O(n*log(n)) 的解决方案。

最佳答案

首先想到的是:

Make a Map<Integer, Integer>

for each number a in A:
if (k / a) is a key in the HashMap:
output the index of a, and HashMap.get(k/a)
else
HashMap.add(a, indexof(a))

所以遍历数组是 O(n),在 Map 中查找键是 O(log n)(假设你使用了 TreeMap,HashMap 在最好的情况下可能更好,但在最坏的情况下更差)

编辑:我想这只能回答 a) 但你明白了

关于arrays - 在 O(n*log(n)) 中找到一对具有给定和和乘积的数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3010964/

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