我有这个问题,我需要解决,需要帮助。给出一个由N个整数组成的非空零索引数组A。该阵列的幅值定义为其两个元素之间可能的最大差值,即:幅值(A) = max{A[P]−A[Q]: 0≤P, Q <N}>
写函数
函数振幅(美元);
,给定一个由N个整数组成的非空零索引数组a,返回其振幅。
假设:
N为整数,取值范围为[1 ~ 1,000,000];数组A中每个元素的取值范围为[0 ~ 5,000,000]的整数。例如,给定数组A
A[0] = 10 A[1] = 2 A[2] = 44A[3] = 15 A[4] = 39 A[5] = 20函数应该返回42。
复杂性:期望最坏情况时间复杂度为O(N);预期的最坏情况空间复杂度为0(1),超出了输入存储(不包括输入参数所需的存储)。可以修改输入数组的元素
你只是遍历数组。从最大值和最小值开始。然后,对于每个元素,如果它大于max,更新max,如果它小于min,更新min,最后你只需要计算max和min的差值。
这将只遍历数组一次所以它是O(N)
function amplitude(array $A) {
return max($A) - min($A);
}