给出一个排好序的整数数组。需要找到与给定数字最接近的值。数组可能包含重复的值 和负数。 例: Input : arr[] = {1, 2, 4, 5, 6, 6, 8, 9}

Target number = 11

Output : 9

Input : arr[] = {2, 5, 6, 7, 8, 8, 9};

Target number = 4

Output :5

import java.util.Scanner;
public class 寻找数组中最接近目标的数字{public static void main(String[] args){try (Scanner input = new Scanner(System.in)) {int length=0;System.out.println("请输入数组长度:");length=input.nextInt();int[] arr=new int[length];System.out.println("请输入数组内容:");for(int i=0;i<length;i++){arr[i]=input.nextInt();}int target;System.out.println("请输入目标值:"); target=input.nextInt();test(arr,target);}}//寻找最接近目标的数字public static void test(int[] arr,int target){int[] arr2=new int[arr.length];int result=0;for(int i=0;i<arr.length;i++){arr2[i]=distance(arr[i], target);}int flag=search(arr2);result=arr[flag];System.out.println("最接近目标值的数为:"+result);}//找出距离最小的编号public static int search(int[] arr){int number=0;int min=arr[0];for(int i=1;i<arr.length;i++){if(arr[i]<min){min=arr[i];number=i;}}return number;}//求出目标值与当前数的距离public static int distance(int a,int b){int dis=0;if(a>=b){dis=a-b;}elsedis=b-a;return dis;}
}

本题额外定义一辅助数组arr2,用于存储所给数组arr中各元素与所给目标值target的距离。然后直接选择查找出辅助数组中的最小值min,即目标值与数组中元素的最短距离。输出对应编号的数组元素即可。

流程图:

寻找数组中最接近目标的数字,Java实现相关推荐

  1. 寻找数组中出现次数超过一半的数字

    [题 目]数组中有一个数字的出现次数超过了该数组长度的一半,找出这个数字.[思 路1]由于要寻找的数字的出现次数超过了数组长度的一半,所以如果将该数组排序,那么它的中位数必然是我们要寻找的数字,所以我 ...

  2. python编写自定义函数计算一维numpy数组中与指定目标数值最接近(距离最近)的数值(find closest value in numpy array to a certain value)

    python编写自定义函数计算一维numpy数组中与指定目标数值最接近(距离最近)的数值(find closest value in numpy array to a certain value) 目 ...

  3. 基于递归寻找数组中的最大数字

    问题描述:寻找数组中的最大数字: # 寻找数组中的最大值,这个写法真的可以啊 def find_max(arr):# 先找基线条件if len(arr) == 0:return -1if len(ar ...

  4. 算法-寻找数组中的重复值,四种解法

    算法-寻找数组中的重复值 寻找数组中的重复值 寻找数组中的重复值 题目来源于:Leetcode-287.本题归类到简单我无法理解-要满足四个条件需要用很特定的解法,面试中要是用到的话很可能是在给自己挖 ...

  5. 《剑指offer》-- 复杂链表的复制、字符串的排列、数组中出现次数超过一半的数字、连续子数组的最大和

    一.复杂链表的复制: 参考牛客网的chancy:https://www.nowcoder.com/questionTerminal/f836b2c43afc4b35ad6adc41ec941dba 1 ...

  6. 数据结构与算法--数组中出一次的数字

    数组中出现一次的数字 题目:一个整型数组里面除了一个数字以外,其他数字都出现了两次.找出这个出现一次的数字,时间复杂度O(n),空间复杂度O(1) 如上题中最简单的方法就是一次循环统计,之后在循环判断 ...

  7. 快速找出数组中出现次数超过一半的数字

    "只要不是特别大的内存开销,时间复杂度比较重要.因为改进时间复杂度对算法的要求更高." --吴斌(NVidia,Graphics Architect) 同样是查找,如果是顺序查找需 ...

  8. 剑指offer:面试题39. 数组中出现次数超过一半的数字

    题目:面试题39. 数组中出现次数超过一半的数字 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字. 你可以假设数组是非空的,并且给定的数组总是存在多数元素. 示例 1: 输入: [1, ...

  9. 【剑指offer-Java版】29数组中出现次数超过一半的数字

    数组中出现次数超过一半的数字 两种思路: 思路一:由于出现次数超过一半,所以如果对这个数组进行划分之后无论如何,位于数组下标 n/2的数字就是出现次数超过一半的数 所以问题就转换为了求划分一次之后 位 ...

最新文章

  1. 注会用计算机,注会准备什么计算器?有型号要求吗?
  2. Test435678
  3. 工作401-普通编译模式
  4. Python 中 异步协程 的 使用方法介绍
  5. Python学习入门8:新人怎么学习Python
  6. 1.3、Bootstrap V4自学之路------起步---浏览器支持
  7. 网络编程——第一部分
  8. Web前端笔记(5)
  9. 全Delphi代码实现安卓扫码程序
  10. 计算机制图师岗位技能要求,机械制图员
  11. MongoDB——聚合管道之$group操作
  12. ios系统更新怎样用移动网络连接服务器,苹果手机用不了蜂窝数据?用这几招解决!...
  13. GenXus进行APP开发-全局颜色设计
  14. python绘制8×8棋盘_python图形工具turtle绘制国际象棋棋盘
  15. 一个java程序员看待互联网行业与物联网行业的区别
  16. 新人职场要淡定 情商比智商更重要
  17. 关于URL重写的实现
  18. 线性回归的补充与变量归一化
  19. Tomcat8:java.lang.IllegalArgumentException: 为此cookie指定的域[.xxx.com]无效
  20. Android 腾讯tbs适配Android Q啦~~

热门文章

  1. 个人随笔、诗集,有兴趣可以看一下
  2. FPGA经验谈系列文章——时序不过怎么办
  3. 异构核间通信mailbox原理研究
  4. 过期牛奶也有好用途(屯些牛奶,等过期后用)
  5. birthday中文是什么_birthday什么意思中文翻译
  6. 【课程·研】高级人工智能 | MOOC习题及课后作业:第1~3章
  7. Java 支付宝对账功能(查询+文件下载+解压+遍历文件+读文件)
  8. 零基础搭建一个基于PHP+MYSQL网站教程,个人建站全过程
  9. W5500常见问题集锦
  10. java中cut是什么意思_cut和paste用法