给定一个数组X和正整数K请找出使表达式 xi-Xi+1-Xi+K-1结果最接近于数组中位数的下标i如果有多个满足条件i请返口最大的i。其中数组中位数:长度为N的数组按照元素的值大小升序排列后下标为N2元素的值 int findTheStartPositionvectorint& scores int K
思路:首先计算出每个i对应的表达式的值,然后按照距离中位数的距离从小到大排序,再按照i从大到小排序,找到第一个满足条件的i即可。
具体实现:
1.计算每个i对应的表达式的值:
vector
2.计算数组中位数:
sort(scores.begin(), scores.end()); int median = scores[scores.size() / 2];
3.将表达式的值按照距离中位数的距离从小到大排序:
vector
4.按照i从大到小排序:
sort(indices.begin(), indices.end(), [](int i, int j) { return i > j; });
5.找到第一个满足条件的i:
for (int i : indices) { if (expr[i] == *min_element(expr.begin(), expr.end())) { return i; } } return -1; // 没有满足条件的
原文地址: https://www.cveoy.top/t/topic/fH7p 著作权归作者所有。请勿转载和采集!