#include #include #include using namespace std;

int main() { int n, k; cin >> n >> k; int* arr = new int[n]; for (int i = 0; i < n; i++) { cin >> arr[i]; } sort(arr, arr + n); // 将数组升序排列 int median = arr[n / 2]; // 数组中位数 int ans = 0; // 最终答案 int min_diff = INT_MAX; // 最小差值 for (int i = 0; i < n; i++) { int diff = abs(arr[i] - median + k - 1) - (arr[i] - median + 1); // 计算差值 if (diff < min_diff) { min_diff = diff; ans = i; } else if (diff == min_diff) { ans = max(ans, i); // 如果差值相等,选择下标更大的 } } cout << ans + 1 << endl; // 下标从1开始 return 0; }

C++ 数组中位数优化:寻找最接近目标值的元素下标

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

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