题目:

分析:
用归并排序的思想,但可以不用合并数组,只需要找到其中位数即可。
代码:
class Solution {
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
int i=0,j=0,l=0;
double d=0,m=0;
int n=(nums1.length+nums2.length)/2;
while(l!=n){
if(i==nums1.length){
m=nums2[j];
j++;l++;
}else{
if(j==nums2.length){
m=nums1[i];
i++;l++;
}else{
if(nums1[i]<nums2[j]){
m=nums1[i];
i++;l++;
}else{
m=nums2[j];
j++;l++;
}
}
}
}
if(i==nums1.length){
d=nums2[j];
}else{
if(j==nums2.length){
d=nums1[i];
}else{
if(nums1[i]<nums2[j]){
d=nums1[i];
}else{
d=nums2[j];
}
}
}
if((nums1.length+nums2.length)%2==0){
d=(d+m)/2;
}
return d;
}
}
本文介绍了如何使用归并排序思想,通过双指针技巧找到两个已排序数组的中位数,避免了传统合并数组的过程。代码实例展示了如何在O(n)时间内找到数组的中位数,适合于面试或理解排序算法的高级应用。
768

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



