【发布时间】:2019-04-08 01:38:31
【问题描述】:
问题:“假设您输入一个数字序列 [a1, a2, ..., an],其中 n ≥ 2。您的目标是找到其中两个数字之间的最大比值序列中的分母。"
显然,可以对列表进行排序并找到最大的比率,但考虑到分子和分母的问题约束,该选项不适用。我们可以做什么?因此,由于索引很重要,因此对数组进行排序非常重要。
【问题讨论】:
标签: algorithm divide-and-conquer
问题:“假设您输入一个数字序列 [a1, a2, ..., an],其中 n ≥ 2。您的目标是找到其中两个数字之间的最大比值序列中的分母。"
显然,可以对列表进行排序并找到最大的比率,但考虑到分子和分母的问题约束,该选项不适用。我们可以做什么?因此,由于索引很重要,因此对数组进行排序非常重要。
【问题讨论】:
标签: algorithm divide-and-conquer
您不必对元素数组进行排序。您可以从数组的末尾到数组的开头检查它。请看下面的算法:
n = size of array A // array are 0 indexed
numerator = A[n-1]
denominator = A[n-2]
max_numerator = max(A[n-1], A[n-2])
for i = n-3 to 0 {
// assume A[i] as denominator
if (numerator/denominator) < (max_numerator/A[i]) {
numerator = max_numerator
denominator = A[i]
}
max_numerator = max(max_numerator, A[i])
}
【讨论】: