zoukankan      html  css  js  c++  java
  • 输出距离平均值距离最近的三个数

    题目描述:

    编写程序计算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

  • 相关阅读:
    主机名与域名
    Screen 状态栏配置
    linux 修改时间
    vsftpd2.3.2安装、配置详解
    mysql 二进制日志
    linux下mysql操作的命令
    Apache加载PHP.ini顺序
    页面异步加载javascript文件
    一段实现页面上的图片延时加载的js
    如何在MySql中记录SQL日志
  • 原文地址:https://www.cnblogs.com/HuangYJ/p/13126756.html
Copyright © 2011-2022 走看看