寻找两个正序数组的中位数
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
算法的时间复杂度应该为 O(log (m+n))。
Java代码:
public double findMedianSortedArrays(int[] nums1, int[] nums2) { // 1.合并排序 int[] all = new int[nums1.length + nums2.length]; System.arraycopy(nums1,0, all,0, nums1.length); System.arraycopy(nums2,0, all,nums1.length, nums2.length); Arrays.sort(all); // 二分查找法筛选 if (all.length % 2 == 0) { int a = all[all.length / 2]; int b = all[all.length / 2 -1]; return new BigDecimal(a + b).divide(new BigDecimal(2)).doubleValue(); } else { return new BigDecimal(all[(all.length-1)/2]).doubleValue(); } }