本文共 780 字,大约阅读时间需要 2 分钟。
给定两个大小为 m 和 n 的有序数组 nums1和 nums2。
请找出这两个有序数组的中位数。要求算法的时间复杂度为 O(log (m+n)) 。
示例 1:nums1 = [1, 3]
nums2 = [2]
中位数是 2.0
示例 2:nums1 = [1, 2]
nums2 = [3, 4]
中位数是 (2 + 3)/2 = 2.5class Solution {
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
int nums1L = nums1.length;
int nums2L = nums2.length;
double result = 0;
int i = 0, j = 0, k = 0;
int[] num = new int[nums1L + nums2L];
while(i < nums1L && j < nums2L){
if(nums1[i] < nums2[j]) num[k++] = nums1[i++];
else num[k++] = nums2[j++];
}
while(i == nums1L && j < nums2L){
num[k++] = nums2[j++];
}
while(i < nums1L && j == nums2L){
num[k++] = nums1[i++];
}
if(num.length % 2 == 0){
result = ((double)(num[num.length / 2] + num[num.length / 2 -1]))/2;
}
else{
result = (double)(num[num.length / 2]);
}
return result;
}
}
转载地址:https://blog.csdn.net/weixin_33642922/article/details/115090098 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!