做网站爱,广州快速排名,深圳招工网站,个人网站是怎么样的快乐安康 给定两个大小分别为 m 和 n 的正序#xff08;从小到大#xff09;数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
算法的时间复杂度应该为 O(log (mn)) 。 public double findMedianSortedArrays(int[] nums1, int[] nums2) {if (nums1.length 从小到大数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
算法的时间复杂度应该为 O(log (mn)) 。 public double findMedianSortedArrays(int[] nums1, int[] nums2) {if (nums1.length nums2.length) {return findMedianSortedArrays(nums2, nums1);}int x nums1.length;int y nums2.length;int low 0, high x;while (low high) {int partitionX (low high) / 2;int partitionY (x y 1) / 2 - partitionX;int maxX (partitionX 0) ? Integer.MIN_VALUE : nums1[partitionX - 1];int maxY (partitionY 0) ? Integer.MIN_VALUE : nums2[partitionY - 1];int minX (partitionX x) ? Integer.MAX_VALUE : nums1[partitionX];int minY (partitionY y) ? Integer.MAX_VALUE : nums2[partitionY];if (maxX minY maxY minX) {if ((x y) % 2 0) {return (double) (Math.max(maxX, maxY) Math.min(minX, minY)) / 2;} else {return (double) Math.max(maxX, maxY);}} else if (maxX minY) {high partitionX - 1;} else {low partitionX 1;}}throw new IllegalArgumentException(Input arrays are not sorted.);
}