Java寻找两个正序数组的中位数

题目来源:

    来源:力扣(LeetCode)

    链接:https://leetcode-cn.com/problems/median-of-two-sorted-arrays

    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题目描述:

    给定两个大小分别为 m 和 n 的正序(从小到大)数组nums1 和nums2。请你找出并返回这两个正序数组的 中位数 。

示例:

示例 1:

    输入:nums1 = [1,3], nums2 = [2]

    输出:2.00000

    解释:合并数组 = [1,2,3] ,中位数 2

示例 2:

    输入:nums1 = [1,2], nums2 = [3,4]

    输出:2.50000

    解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5

示例 3:

    输入:nums1 = [0,0], nums2 = [0,0]

    输出:0.00000

示例 4:

    输入:nums1 = [], nums2 = [1]

    输出:1.00000

示例 5:

    输入:nums1 = [2], nums2 = []

    输出:2.00000

思路:

    1.合并两个数组。

    2.对数组进行排序

    3.判断数组长度是否为奇数,如果是,则直接返回数组中间的数值

    如果数组长度是偶数,则返回数组中间两个数的和的二分之一

代码:

 public static double findMedianSortedArrays(int[] nums1, int[] nums2) {
     int[] array = Arrays.copyOf(nums1, nums1.length + nums2.length);
     for (int i = 0; i < nums2.length; i++) {
         array[nums1.length + i] = nums2[i];
     }
     if (array.length == 0)
         return 0.0;
     if (array.length == 1)
         return array[0];
     Arrays.sort(array);
     if(array.length % 2 == 1){
         return array[array.length / 2 ];
     }else{
         return (array[array.length / 2] + array[array.length / 2 - 1] ) / 2.0;
     }
 }   

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容