import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param herd1 int整型一维数组 * @param herd2 int整型一维数组 * @param herd3 int整型一维数组 * @return double浮点型 */ public double findMedianSortedArray (int[] herd1, int[] herd2, int[] herd3) { // write code here int[] nums1 = new int[herd1.length + herd2.length + herd3.length]; System.arraycopy(herd1, 0, nums1, 0, herd1.length); System.arraycopy(herd2, 0, nums1, herd1.length, herd2.length); System.arraycopy(herd3, 0, nums1, herd1.length + herd2.length, herd3.length); Arrays.sort(nums1); int n = nums1.length; if (n % 2 == 0) { return (nums1[n / 2] + nums1[n / 2 - 1]) / 2.0; } else { return nums1[n / 2]; } } }
编程语言是Java。
该题考察的知识点是数组操作和排序。
代码的文字解释如下:
- 使用
System.arraycopy()
方法将herd1
、herd2
和herd3
中的元素依次拷贝到nums1
数组中,保持原有顺序。 - 使用
Arrays.sort()
方法对nums1
数组进行排序,使其按照升序排列。 - 获取排序后的数组
nums1
的长度n
。 - 判断数组长度是否为偶数,如果是,则返回数组中位数为中间两个数的平均值
(nums1[n / 2] + nums1[n / 2 - 1]) / 2.0
。 - 如果数组长度为奇数,则返回数组中位数为中间的那个数
nums1[n / 2]
。