【发布时间】:2020-02-09 03:39:38
【问题描述】:
到目前为止,我有一个通过 a 的 for 循环,然后是另一个检查 b 值的 for 循环,然后取 c 的最高值并将其放入新数组中
D = [0, 0, 0]
for i in A
highestToAdd = 0
for j in B
if B[j] < A[i]
if C[j] > highestToAdd
highestToAdd = C[j]
D[i] = highestToAdd
return D
input arrays:
A = [3, 1, 7]
B = [5, 0, 2]
C = [5, 3, 25]
output array is:
D = [25, 3, 25]
在这里你可以看到我们两次得到了 25,我们不得不多次循环遍历整个 b,以找到 c 中的最大值来找到它。
如您所见,我会一遍又一遍地循环 a 的每个值和 b 的每个值(尤其是当 3 个数组大小增加时),我应该采取什么方向?
编辑 - 更大的样本
A = [5, 2, 1, 9, 3, 1, 5, 4, 2, 2]
B = [8, 1, 7, 10, 6, 2, 5, 2, 4, 3]
C = [9, 5, 8, 4, 6, 10, 3, 9, 6, 8]
would result in
D = [10, 10, 5, 10, 10, 5, 10, 10, 10, 10]
【问题讨论】:
标签: arrays algorithm performance dynamic pseudocode