我有一个数字,计算离这个数字最接近的三个数字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我有一个数字,计算离这个数字最接近的三个数字相关的知识,希望对你有一定的参考价值。

例如,我的数字是15, 这里所有的数字有1,3,4,5,6,8,9,14,20,23,31,55,99,
那么我得到的数字就是:14,20,9

就像地图,我要拿到离我这最近的三家酒店。

参考技术A import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

public class Test

/**
* @param args
*/
public static void main(String[] args)
//需要比较的所有数字
int[] arr=new int[]1,3,4,5,6,8,9,14,20,23,31,55,99;
//目标数字
int a = 15;

//存差值的绝对值
int[] sub=new int[arr.length];
//存差值对应的原数字
Map<Integer, Integer> map=new HashMap<Integer, Integer>();

for (int i = 0; i < arr.length; i++)
sub[i]=Math.abs(arr[i]-a);
map.put(sub[i], arr[i]);

//对差值的绝对值排序
Arrays.sort(sub);

//前面三个差值对应的数字就是想要的
System.out.println(map.get(sub[0]));
System.out.println(map.get(sub[1]));
System.out.println(map.get(sub[2]));




输出结果:
14
20
9
当然了,我没有考虑差值相同的情况,这个可以修改map为<Integer,List<Integer>>,在put的时候加处理逻辑来解决,不过大概思路就是这样的本回答被提问者采纳

以上是关于我有一个数字,计算离这个数字最接近的三个数字的主要内容,如果未能解决你的问题,请参考以下文章

在数组中查找三个元素之和最接近给定数字

用Java编写,在给出的数字里面找三个数字的和等于或者最接近513.91的。在线等,用上数组最好。

mysql 怎么计算第二个数字和第一个数字差值

如何从数组中查找最接近500的数字

甚至在数组中分配数字

在多维数组中找到两个相关数字的最接近组合