题解 | #牛的体重排序# 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

代码的文字解释如下:

  1. 整型数组v,用来保存两个输入数组的合并结果。同时定义三个整型变量mni,分别表示数组weightsA的长度、数组weightsB的长度以及新数组v中元素的索引。
  2. 使用两个指针l1l2来遍历数组weightsAweightsB,在循环中比较weightsA[l1]weightsB[l2]的大小,将较小的值添加到新数组v中,并相应地更新指针和索引。
  3. 循环结束后,判断新数组v的长度(即m + n)的奇偶性,如果是偶数,则取v[(m + n) / 2]v[(m + n) / 2 - 1]两个元素的平均值作为中位数;如果是奇数,则直接取v[(m + n) / 2]作为中位数。
  4. 将中位数转换为浮点数类型,并将其作为结果返回。
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务