数组:算法(4)—— 寻找两个正序数组的中位数

题目描述

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

算法的时间复杂度应该为 O(log (m+n)) 。 

题解思路

将两个数组合成一个,进行排序,并取根据长度奇偶获取中位数。

代码

 1     public double findMedianSortedArrays(int[] nums1, int[] nums2) {
 2         int[] result = Arrays.copyOf(nums1, nums1.length + nums2.length);
 3         System.arraycopy(nums2, 0, result, nums1.length, nums2.length);
 4         Arrays.sort(result);
 5         if (1 == result.length) {
 6             return result[0];
 7         }
 8         if (0 == result.length % 2) {
 9             return (result[(result.length + 1)/2] + result[(result.length -1)/2])/2.0;
10         }
11         return result[result.length /2];
12     }

 

posted @ 2021-12-14 11:52  墨梅青莲  阅读(38)  评论(0)    收藏  举报