题解 | #牛的体重排序# 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]
作为中位数。 - 将中位数转换为浮点数类型,并将其作为结果返回。