这一道题目比较简单
我们就直接开始看代码吧
方法一 :利用归并的方法,将两个数组合并成一个大数组,
时间复杂度和空间的复杂度为:O(m+n);
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
//考虑排序问题 直接利用归并排序的思想
//考虑排序问题 直接利用归并排序的思想
int[] arr=new int[nums1.length+nums2.length];
int temp3=0;
for(int r=0,l=0;temp3<arr.length;temp3++) {
//判断谁的值更大
//先判断有没有超出界线
int dx = r < nums1.length ? r : -1;
int dy = l < nums2.length ? l : -1;
//直接判断是不是超过了
if (dx != -1 && dy != -1) {
//直接判断谁更小
if (nums1[r] <= nums2[l]) {
arr[temp3] = nums1[r];
r++;
} else {
arr[temp3] = nums2[l];
l++;
}
}
//长度不一致时
if (dx == -1 && dy != -1) {
arr[temp3] = nums2[l++];
}
if (dx != -1 && dy == -1) {
arr[temp3] = nums1[r++];
}
}
double d;
if(temp3%2==1)
{
d=(double) arr[temp3/2];
}
else {
d=(double) (arr[temp3/2]+arr[temp3/2-1])/2;
}
return d;
}
方法二:利用二分查找
时间复杂度:O(log(m+n)
空间复杂度:O(1)
这个还没有搞清楚 先放一下