当前位置: 首页 > news >正文

1688批发平台北京网络推广优化公司

1688批发平台,北京网络推广优化公司,一级注册工程师,国际新闻最新10条题目描述 在一个非降序列中&#xff0c;查找与给定值最接近的元素。 输入格式 第一行包含一个整数n&#xff0c;为非降序列长度。1 < n < 100000。 第二行包含n个整数&#xff0c;为非降序列各元素。所有元素的大小均在0-1,000,000,000之间。 第三行包含一个整数m&#x…

题目描述
在一个非降序列中,查找与给定值最接近的元素。
输入格式
第一行包含一个整数n,为非降序列长度。1 <= n <= 100000。
第二行包含n个整数,为非降序列各元素。所有元素的大小均在0-1,000,000,000之间。
第三行包含一个整数m,为要询问的给定值个数。1 <= m <= 10000。
接下来m行,每行一个整数,为要询问最接近元素的给定值。所有给定值的大小均在0-1,000,000,000之间。
输出格式
m行,每行一个整数,为最接近相应给定值的元素值,保持输入顺序。若有多个值满足条件,输出最小的一个。
样例输入
3
2 5 8
2
10
5
样例输出
8
5

解题思路:
经过二分查找后,low和high分别会指向比 x 大和比 x 小的元素,计算这两个元素到 x 的距离,返回更小的那个元素值,不清楚的话可以在代码中打印出经过循环后的low和high值。
注意边界的情况!
假设列表是 [2,5,8]
例如查找的是10,low最后为3,high为2,此时直接返回列表最后一个元素即可;
如果查找的是-1,high最后的取值为-1,low为0,此时直接返回列表第一个值即可。

# 数据的输入
n = int(input())
list1 = list(map(int, input().split()))
m = int(input())def find_closest(li, x):low = 0high = len(li) - 1while low <= high:mid = (low + high) // 2if list1[mid] == x:return list1[mid]elif list1[mid] < x:low = mid + 1else:high = mid - 1# 经过二分查找后,low和high分别会指向比 x 大和比 x 小的元素# 计算这两个元素到 x 的距离,返回更小的那个元素值if low >= len(li):return li[-1]elif high < 0:return li[0]elif abs(li[low] - x) < abs(li[high] - x):return li[low]else:return li[high]for i in range(m):x = int(input())print(find_closest(list1, x))
http://www.ds6.com.cn/news/63407.html

相关文章:

  • 帝国和织梦哪个做网站好黑马培训价目表
  • 做模板网站的利与弊百度指数行业排行
  • 做矢量图的网站seo项目培训
  • 徐州市经济技术开发区建设局网站长尾关键词爱站
  • 驾校做网站天津seo推广服务
  • mac机怎么使用wordpress合肥优化排名推广
  • 做全景的网站软文编辑器
  • 设计工作室网站推荐西安网络推广公司
  • 郑州营销网站建设设计友情链接价格
  • 网站开发的选题依据推广平台排名前十名
  • 空间网页版整站seo排名外包
  • 做外汇门户网站百中搜优化软件靠谱吗
  • 自建站 外贸自己在家怎么做电商
  • 沈阳企业模板建站朝阳区seo
  • 道滘仿做网站360免费建站
  • 服装商城网站模板bt磁力搜索
  • 做网站的网页新浪微舆情大数据平台
  • 营销型门户网站合肥全网推广
  • 智能建站系统怎么更换网站模板济南百度公司
  • 品牌推广策划方案怎么写seo排名优化软件有用吗
  • wordpress 只允许网络优化器免费
  • 吸引流量的网站百度账号中心
  • 微信小程序商城怎么开发北京seo营销公司
  • 网站推广应该怎么做百度竞价推广点击软件
  • 门源县公司网站建设石家庄抖音seo
  • 桂林网站优化注意事项广告网站建设网站排名优化
  • 重庆市建设工程信息seo优化便宜
  • 像天猫网站怎么做怎么能在百度上做推广
  • 免费咨询律师在线一对一问答如何利用seo赚钱
  • 专门做教育的视频网站打开百度首页