LeedCode刷题感悟

LeedCode刷题感悟

寻找两个有序数组的中位数:
在这里插入图片描述
其实这就是一个二路归并排序问题!代码如下在这里插入代码片

class Solution {
public static double findMedianSortedArrays(int[] nums1, int[] nums2) {
double result = 0;//定义结果
int length1 = nums1.length;//nums1的长度
int length2 = nums2.length;//nums2的长度
int a = 0, b = 0;//最开始a,b分别指向两数组的开头,后面一位比较nums1[a]与nums2[b]
int k = 0;
int[] num = new int[10000];//存储新的数组
while (a < length1 && b < length2) {
while (nums1[a] <= nums2[b]) {
num[k++] = nums1[a++];
if (a >= length1)
break;//注意这个break与下一个break的区别;这个跳出本次循环,下一个跳出整个
}
if (a >= length1)
break;
while (nums1[a] > nums2[b]) {
num[k++] = nums2[b++];
if (b >= length2)
break;
}
}
while (a < length1)
num[k++] = nums1[a++];
while (b < length2)
num[k++] = nums2[b++];
//将剩余的部分存入num中
if ((length1 + length2) % 2 == 0)
result = (num[(length1 + length2) / 2] + num[(length1 + length2) / 2 - 1]) / 2.0;
else
result = (double) (num[(length1 + length2) / 2]);
return result;
}
}

又是一次笔记,再接再厉!

发布了22 篇原创文章 · 获赞 0 · 访问量 608

猜你喜欢

转载自blog.csdn.net/qq_44932835/article/details/103467856
今日推荐