题目考察的知识点是:
合并数组,排序。
题目解答方法的文字分析:
给定三个有序数组 herd1、herd2 和 herd3,分别表示三个牛群的牛的体重,并且每个数组都按照体重从小到大的顺序进行排序。我们的任务是找出这三个正序数组合并后的中位数。为了实现时间复杂度为 O(log (m+n+p)) 的算法解决此问题,我们可以使用类似于归并排序的思想,同时维护三个指针。
本题解析所用的编程语言:
java语言。
完整且正确的编程代码:
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 fal = herd1.length; int sal = herd2.length; int mal = herd3.length; int[] result = new int[fal + sal + mal]; System.arraycopy(herd1, 0, result, 0, fal); System.arraycopy(herd2, 0, result, fal, sal); System.arraycopy(herd3, 0, result, fal + sal, mal); Arrays.sort(result); int n = result.length; if (n % 2 == 0) { return (result[n / 2] + result[n / 2 - 1]) / 2.0; } else { return result[n / 2]; } } }