思路: 首先计算出数组的中位数,然后遍历数组,对于每一个 i,计算出 x[i]-X[i+1]-X[i+K-1] 的结果,与中位数的差值取绝对值,记录下来。最后找到差值最小的位置 i 即可。

代码:

int findTheStartPosition(vector<int>& scores, int K) {
  // 计算中位数
  int mid = scores.size() / 2;
  sort(scores.begin(), scores.end());
  int median = scores[mid];

  // 遍历数组,找到差值最小的位置 i
  int minDiff = INT_MAX;
  int startPos = -1;
  for (int i = 0; i <= scores.size() - K; i++) {
    int diff = abs(scores[i] - scores[i + 1] - scores[i + K - 1] - median);
    if (diff < minDiff) {
      minDiff = diff;
      startPos = i;
    }
  }

  return startPos;
}
寻找数组中使表达式最接近中位数的起始位置

原文地址: https://www.cveoy.top/t/topic/onK6 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录