假设我们有一个长度为n
的整数数组。我们需要一个像f(arr, n)
这样的函数,它返回一个介于-100%
和+100%
之间的数字。结果越接近+100%
,升序的数组越多;离-100%
越近的结果,降序的数组越多。如果数组完全按随机顺序排列,则结果应该接近0%
。
这是我到目前为止的实现:
long map(long x, long in_min, long in_max, long out_min, long out_max)
{
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
int f(int arr[], int n) {
int p = 0;
for (int i = 0; i < n - 1; i++) {
int a = arr[i];
int b = arr[i + 1];
if (a != b) {
bool asc_check = a < b;
bool desc_check = a > b;
if (asc_check && !desc_check)
p++;
else if (!asc_check && desc_check)
p--;
}
}
return map(p, -(n - 1), n - 1, -100, 100);
}
我怀疑我的代码是否准确。请帮我写正确的实现。
谢谢!
https://stackoverflow.com/questions/54988633
复制相似问题