-->
当前位置:首页 > 题库 > 正文内容

7-7 最近邻 (10 分)

Luz4年前 (2021-03-05)题库1794
7-7 最近邻 (10 分)

在一个非降序列中,查找与给定值最接近的元素。

输入格式:

第一行包含两个数,一个整数n,表示序列中元素个数。(1 ≤ n ≤ 1000000。),一个整数x,表示要查找x的最近邻。

第二行包含n个整数,为非降序列各元素。所有元素的大小均在1~1e9之间。

输出格式:

一个整数,为最接近相应给定值的元素值。若有多个值满足条件,输出最小的一个。

输入样例:

在这里给出一组输入。例如:

3  6
2 5 8

输出样例:

5
作者
严华云
单位
湖州师范学院
代码长度限制
16 KB
时间限制
250 ms
内存限制
64 MB
#include <iostream>
#include<cmath>
using namespace std;
int main()
{
  int n,x;
  int left, right, mid;
  cin >> n >> x;
  int a[n+1];
  for (int i = 1; i <= n;i++){
    scanf("%d",&a[i]);
  }
  
  left = 1;
  right = n;
  while(left+1<right){
    mid = (left + right) / 2;
    if(a[mid]>x)
      right = mid;
    else
      left = mid;
  }
  if(fabs(a[left]-x)<=fabs(a[right]-x))
    cout << a[left] << endl;
  else
    cout << a[right] << endl;
  return 0;
}


发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。