题目考察的知识点是:
合并数组,排序。
题目解答方法的文字分析:
给定三个有序数组 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];
}
}
}

京公网安备 11010502036488号