4-寻找两个正序数组的中位数
题目:两个正序数组,找出他们的中位数(中间位置的数),算法的时间复杂度应该为 O(log (m+n))。
1.将两个数组组成一个新的数组,
int[] allArry = new int[nums1.length + nums2.length];
System.arraycopy(nums1, 0, allArry, 0, nums1.length);
System.arraycopy(nums2, 0, allArry, nums1.length, nums2.length);
2.将新数组中的元素排序(从小到大),
Arrays.sort(allArry);
3.用二分查找法,找出中位数
if (allArry.length % 2 == 0) {
int sum = allArry[allArry.length / 2] + allArry[(allArry.length / 2) - 1];
double result = sum / 2.;
return result;
} else {
double result = (double) allArry[allArry.length / 2];
return result;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步