寻找数组中最接近目标的数字,Java实现
给出一个排好序的整数数组。需要找到与给定数字最接近的值。数组可能包含重复的值 和负数。 例: 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]由于要寻找的数字的出现次数超过了数组长度的一半,所以如果将该数组排序,那么它的中位数必然是我们要寻找的数字,所以我 ...
- python编写自定义函数计算一维numpy数组中与指定目标数值最接近(距离最近)的数值(find closest value in numpy array to a certain value)
python编写自定义函数计算一维numpy数组中与指定目标数值最接近(距离最近)的数值(find closest value in numpy array to a certain value) 目 ...
- 基于递归寻找数组中的最大数字
问题描述:寻找数组中的最大数字: # 寻找数组中的最大值,这个写法真的可以啊 def find_max(arr):# 先找基线条件if len(arr) == 0:return -1if len(ar ...
- 算法-寻找数组中的重复值,四种解法
算法-寻找数组中的重复值 寻找数组中的重复值 寻找数组中的重复值 题目来源于:Leetcode-287.本题归类到简单我无法理解-要满足四个条件需要用很特定的解法,面试中要是用到的话很可能是在给自己挖 ...
- 《剑指offer》-- 复杂链表的复制、字符串的排列、数组中出现次数超过一半的数字、连续子数组的最大和
一.复杂链表的复制: 参考牛客网的chancy:https://www.nowcoder.com/questionTerminal/f836b2c43afc4b35ad6adc41ec941dba 1 ...
- 数据结构与算法--数组中出一次的数字
数组中出现一次的数字 题目:一个整型数组里面除了一个数字以外,其他数字都出现了两次.找出这个出现一次的数字,时间复杂度O(n),空间复杂度O(1) 如上题中最简单的方法就是一次循环统计,之后在循环判断 ...
- 快速找出数组中出现次数超过一半的数字
"只要不是特别大的内存开销,时间复杂度比较重要.因为改进时间复杂度对算法的要求更高." --吴斌(NVidia,Graphics Architect) 同样是查找,如果是顺序查找需 ...
- 剑指offer:面试题39. 数组中出现次数超过一半的数字
题目:面试题39. 数组中出现次数超过一半的数字 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字. 你可以假设数组是非空的,并且给定的数组总是存在多数元素. 示例 1: 输入: [1, ...
- 【剑指offer-Java版】29数组中出现次数超过一半的数字
数组中出现次数超过一半的数字 两种思路: 思路一:由于出现次数超过一半,所以如果对这个数组进行划分之后无论如何,位于数组下标 n/2的数字就是出现次数超过一半的数 所以问题就转换为了求划分一次之后 位 ...
最新文章
- 注会用计算机,注会准备什么计算器?有型号要求吗?
- Test435678
- 工作401-普通编译模式
- Python 中 异步协程 的 使用方法介绍
- Python学习入门8:新人怎么学习Python
- 1.3、Bootstrap V4自学之路------起步---浏览器支持
- 网络编程——第一部分
- Web前端笔记(5)
- 全Delphi代码实现安卓扫码程序
- 计算机制图师岗位技能要求,机械制图员
- MongoDB——聚合管道之$group操作
- ios系统更新怎样用移动网络连接服务器,苹果手机用不了蜂窝数据?用这几招解决!...
- GenXus进行APP开发-全局颜色设计
- python绘制8×8棋盘_python图形工具turtle绘制国际象棋棋盘
- 一个java程序员看待互联网行业与物联网行业的区别
- 新人职场要淡定 情商比智商更重要
- 关于URL重写的实现
- 线性回归的补充与变量归一化
- Tomcat8:java.lang.IllegalArgumentException: 为此cookie指定的域[.xxx.com]无效
- Android 腾讯tbs适配Android Q啦~~