题目如下:
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
算法的时间复杂度应该为 O(log (m+n)) 。
示例 1:
1 2 3
| 输入:nums1 = , nums2 = 输出:2.00000 解释:合并数组 = ,中位数 2
|
示例 2:
1 2 3
| 输入:nums1 = , nums2 = 输出:2.50000 解释:合并数组 = ,中位数 (2 + 3) / 2 = 2.5
|
提示:
nums1.length == m
nums2.length == n
0 <= m <= 1000
0 <= n <= 1000
1 <= m + n <= 2000
-106 <= nums1[i], nums2[i] <= 106
题解:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| class Solution { public double findMedianSortedArrays(int[] nums1, int[] nums2) { int m = nums1.length; int n = nums2.length; int[] nums = new int[m+n]; for(int i = 0;i < m;i++){ nums[i] = nums1[i]; } for(int j = 0;j < n; j++){ nums[nums1.length + j] = nums2[j]; } Arrays.sort(nums); if(nums.length % 2 == 0){ return (nums[(m + n) / 2 - 1] + nums[(m + n) / 2]) / 2.0; } else{ return nums[(m + n) / 2]; } } }
|
其他方法还在研究ing。。。。