tính giá tri trung bình hai mảng
unknown
plain_text
a year ago
1.7 kB
3
Indexable
// Online Java Compiler // Use this editor to write, compile and run your Java code online public class MedianOfTwoSortedArrays { public static double findMedianSortedArrays(int[] nums1, int[] nums2) { int m = nums1.length; int n = nums2.length; if (m > n) { int[] temp = nums1; nums1 = nums2; nums2 = temp; int tempLen = m; m = n; n = tempLen; } int low = 0; int high = m; while (low <= high) { int partitionX = (low + high) / 2; int partitionY = (m + n + 1) / 2 - partitionX; int maxX = (partitionX == 0) ? Integer.MIN_VALUE : nums1[partitionX - 1]; int minX = (partitionX == m) ? Integer.MAX_VALUE : nums1[partitionX]; int maxY = (partitionY == 0) ? Integer.MIN_VALUE : nums2[partitionY - 1]; int minY = (partitionY == n) ? Integer.MAX_VALUE : nums2[partitionY]; if (maxX <= minY && maxY <= minX) { if ((m + n) % 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."); } public static void main(String[] args) { int[] nums1 = {3, 2, 3}; int[] nums2 = {8, 6}; System.out.println(findMedianSortedArrays(nums1, nums2)); // Output: 2.0 } }
Editor is loading...