LeetCode4:
给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。
你可以假设 nums1 和 nums2 不会同时为空。
示例 1:
nums1 = [1, 3]
nums2 = [2]
则中位数是 2.0
示例 2:
nums1 = [1, 2]
nums2 = [3, 4]
则中位数是 (2 + 3)/2 = 2.5
解法一:
将两个数组合并后找中位数。
class Solution {
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
int len1 = nums1.length - 1;
int len2 = nums2.length - 1;
int temp[]= new int[len1 + len2 + 2];
int k = len1 + len2 + 1;
double res = 0;
while(len1 >= 0 && len2 >= 0){
if(nums1[len1] > nums2[len2]){
temp[k] = nums1[len1];
k--;
len1--;
}else{
temp[k] = nums2[len2];
k--;
len2--;
}
}
if(len1 < 0){
while(len2 >= 0){
temp[k] = nums2[len2];
k--;
len2--;
}
}else{
while(len1 >= 0){
temp[k] = nums1[len1];
k--;
len1--;
}
}
int len = temp.length;
if(len % 2 != 0){
res = temp[(len - 1) / 2];
}else{
res = (temp[len / 2] + temp[(len / 2) - 1])/2.0;
}
return res;
}
}
解法二:
标签:Java,temp,int,中位数,len2,len1,数组,nums1,nums2
来源: https://www.cnblogs.com/smilexuezi/p/11630159.html
该博客介绍了如何解决LeetCode第4题,即找到两个有序数组的中位数。提供了两种解法:一是合并数组后寻找中位数,二是不合并数组直接求解。通过示例代码详细解释了算法过程,适用于Java程序员提升算法能力。
&spm=1001.2101.3001.5002&articleId=114545309&d=1&t=3&u=843df298513c415d9da79cf3cfde3e2e)
1万+

被折叠的 条评论
为什么被折叠?



