输出距离平均值距离最近的三个数

题目描述:

编写程序计算10个正整数的平均数,找出这10个数中雨平均值的距离最近的三个数(差值的绝对值)。以距离的大小对这三个数进行排序并输出(距离小的先输出)

输入:[33,44,61,2,36,42,56,81,11,17]

输出:[36,42,33]

思路:

1. 算平均值。

2. 用hashmap,每个数减去平均值,取绝对值,存入key。value存当前那个数。

3.用一个ArrayList存一下keys,并排序。

4. 把排序后的list的前三个元素当成key,去map根据key来get值。

 1 import java.util.*;
 2 import java.lang.Math;
 3 public class Main {
 4     public static void main(String[] args) {
 5         int[] arr = new int[]{33,44,61,2,36,42,56,81,11,17};
 6         System.out.println(Arrays.toString(find(arr)));
 7     }
 8     public static int[] find(int[] arr){
 9         int[] res = new int[3];
10         int sum = 0;
11         int ave = 0;
12         for(int i = 0; i < arr.length; i++){
13             sum += arr[i];
14         }
15         ave = sum / arr.length;
16         Map<Integer,Integer> map = new HashMap<>();
17         for(int i = 0; i < arr.length; i++){
18             map.put(Math.abs(arr[i]-ave),arr[i]);
19         }
20         List<Integer> list = new ArrayList<>();
21         for(Integer key : map.keySet()){
22             list.add(key);
23         }
24         Collections.sort(list);
25         for (int i = 0; i < 3; i++){
26             res[i] = map.get(list.get(i));
27         }
28         return res;
29     }
30 
31 }
View Code

 

参考:https://blog.csdn.net/uonele/article/details/106745852

posted @ 2020-06-14 20:23  不学无墅_NKer  阅读(520)  评论(0编辑  收藏  举报