题解 | #牛体重的中位数计算#

牛体重的中位数计算

https://www.nowcoder.com/practice/fb8b20ff46024567a0f3738cd2516b83?tpId=363&tqId=10613530&ru=/exam/oj&qru=/ta/super-company23Year/question-ranking&sourceUrl=%2Fexam%2Foj%3Fpage%3D1%26tab%3D%25E7%25AE%2597%25E6%25B3%2595%25E7%25AF%2587%26topicId%3D363

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param weights int整型一维数组
     * @return double浮点型一维数组
     */
    public double[] calculateMedians (int[] weights) {
        double [] result = new double[weights.length];
        result[0] = weights[0];
        for (int i = 1; i < weights.length ; i++) {
            int [] copyArr = Arrays.copyOf(weights, i + 1);
            Arrays.sort(copyArr);
            if (i%2!=0) {
			  // 除以2.0是关键,否则如何是/2的话,将会造成小数点缺失问题 Java基础
                 result[i] = (copyArr[(i + 1) >> 1] + copyArr[(i >> 1)]) /2.0;
            } else {
                result[i] = copyArr[i>>1];
            }
        }
        return result;
    }
}

本题知识点分析:

1.API函数(Arrays.copyof,sort)

2.数组遍历

3.数学模拟

本题解题思路分析:

1.先初始化result[0] = weights[0],因为一个数的中位数必然是它本身。

2.然后利用API函数进行拷贝数组,拷贝前i+1个,比如i=1,那么就拷贝前两个,比如,500,700

3.然后利用API函数进行排序,因为并不知道数组是否是已经是升序的

4.如果i是偶数,那么就取索引为i/2的位置,因为拷贝的数组是i+1,那么i是偶数,那么数组其实是奇数,奇数是直接有中位数的

5.如果i是奇数,表明拷贝数组是偶数,偶数没有直接的中位数,要取索引为i+1和i的两个元素,然后取平均值

本题使用编程语言: Java

如果你觉得本篇文章对你有帮助的话,可以点个赞支持一下,感谢~

全部评论

相关推荐

2 收藏 评论
分享
牛客网
牛客企业服务