寻找两个正序数组的中位数,java代码
时间: 2023-03-02 12:41:29 浏览: 137
java面试题-leetcode题解之第4题寻找两个正序数组的中位数.zip
以下是一个用 Java 语言实现寻找两个正序数组的中位数的例子:
```
public class Solution {
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
int m = nums1.length;
int n = nums2.length;
int len = m + n;
int[] sorted = new int[len];
int i = 0, j = 0, k = 0;
while (i < m && j < n) {
if (nums1[i] < nums2[j]) {
sorted[k++] = nums1[i++];
} else {
sorted[k++] = nums2[j++];
}
}
while (i < m) {
sorted[k++] = nums1[i++];
}
while (j < n) {
sorted[k++] = nums2[j++];
}
if (len % 2 == 0) {
return (double) (sorted[len / 2 - 1] + sorted[len / 2]) / 2;
} else {
return (double) sorted[len / 2];
}
}
}
```
这个算法的基本思路是将两个数组合并成一个有序数组,然后通过数组长度的奇偶性来判断中位数的位置,并计算中位数的值。具体实现中,使用三个指针分别指向两个数组和合并后的数组的当前位置,不断比较两个数组当前位置的值,将较小的值加入合并后的数组。最后再根据合并后的数组的长度计算中位数的值。
阅读全文