数组:算法(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 }

浙公网安备 33010602011771号