题解 | #牛的体重排序# java
牛的体重排序
https://www.nowcoder.com/practice/1afd5afef2aa49a8a39b63bb9d2821f9
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param weightsA int整型一维数组
* @param weightsB int整型一维数组
* @return double浮点型
*/
public double findMedianSortedArrays (int[] weightsA, int[] weightsB) {
// write code here
int m = weightsA.length;
int n = weightsB.length;
int[] v = new int[m + n];
int l1 = 0;
int l2 = 0;
int i = 0;
while (l1 < m && l2 < n) {
v[i++] = weightsA[l1] <= weightsB[l2] ? weightsA[l1++] : weightsB[l2++];
}
while (l1 < m) {
v[i++] = weightsA[l1++];
}
while (l2 < n) {
v[i++] = weightsB[l2++];
}
double res = 0;
if ((m + n) % 2 == 0) {
res = (v[(m + n) / 2] + v[(m + n) / 2 - 1]) / 2.0;
} else {
res = (double) v[(m + n) / 2];
}
return res;
}
}
用的是Java语言。
该题考察的知识点包括:
- 数组操作:合并两个有序数组
- 指针的使用:通过l1和l2两个指针来遍历两个输入数组
- 数组索引的计算:通过i索引来确定新数组中的位置
- 条件判断:判断数组长度的奇偶性来确定中位数的计算方式
- 类的定义和方法的声明:定义了一个名为
Solution的类,其中包含一个公共方法findMedianSortedArrays
代码的文字解释如下:
- 整型数组
v,用来保存两个输入数组的合并结果。同时定义三个整型变量m、n和i,分别表示数组weightsA的长度、数组weightsB的长度以及新数组v中元素的索引。 - 使用两个指针
l1和l2来遍历数组weightsA和weightsB,在循环中比较weightsA[l1]和weightsB[l2]的大小,将较小的值添加到新数组v中,并相应地更新指针和索引。 - 循环结束后,判断新数组
v的长度(即m + n)的奇偶性,如果是偶数,则取v[(m + n) / 2]和v[(m + n) / 2 - 1]两个元素的平均值作为中位数;如果是奇数,则直接取v[(m + n) / 2]作为中位数。 - 将中位数转换为浮点数类型,并将其作为结果返回。



