我有一个数字,计算离这个数字最接近的三个数字
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我有一个数字,计算离这个数字最接近的三个数字相关的知识,希望对你有一定的参考价值。
例如,我的数字是15, 这里所有的数字有1,3,4,5,6,8,9,14,20,23,31,55,99,
那么我得到的数字就是:14,20,9
就像地图,我要拿到离我这最近的三家酒店。
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的时候加处理逻辑来解决,不过大概思路就是这样的本回答被提问者采纳
以上是关于我有一个数字,计算离这个数字最接近的三个数字的主要内容,如果未能解决你的问题,请参考以下文章