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
如果你觉得本篇文章对你有帮助的话,可以点个赞支持一下,感谢~