给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 。
请找出这两个有序数组的中位数。要求算法的时间复杂度为 O(log (m+n)) 。
你可以假设 nums1 和 nums2 不同时为空。
示例 1:
nums1 = [1, 3] nums2 = [2] 中位数是 2.0
示例 2:
nums1 = [1, 2] nums2 = [3, 4] 中位数是 (2 + 3)/2 = 2.5
注意:因为返回值为double类型,故在运算过程中需要将整型数组的数据转换为double类型,代码如下:
import java.util.ArrayList; import java.util.Collections; class Solution { public double findMedianSortedArrays(int[] nums1, int[] nums2) { ArrayList<Integer> list=new ArrayList<Integer>(); for(int i=0;i<nums1.length;i++) list.add(nums1[i]); for(int i=0;i<nums2.length;i++) list.add(nums2[i]); Collections.sort(list); double num=0; int len=list.size(); if(len%2!=0) num=(double)list.get(len/2); else num=((double)list.get(len/2)+(double)list.get(len/2-1))/2; return num; } } |