LeetCode-hard-4寻找两个有序数组的中位数
0、缘起
这是在一个技术交流群里面看到的一个题目,花了大约3分钟想出算法,特此mark一下,留待以后填坑在做实现
1、题目描述
给定两个大小为 m 和 n 的有序数组
nums1
和nums2
。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。
你可以假设
nums1
和nums2
不会同时为空。示例 1:
nums1 = [1, 3] nums2 = [2] 则中位数是 2.0
示例 2:
nums1 = [1, 2] nums2 = [3, 4] 则中位数是 (2 + 3)/2 = 2.5
2、伪代码描述算法
这就是典型的二分算法的应用,此算法显然满足:正确性,高效性
searchMid(arr1,0,m,arr2,0,n){
if(arr[m/2]==arr2[n/2])//这部分代码应该有点问题,递归基 没有写完备
return arr[m/2]
else if(arr[m/2]<arr2[n/2])
searchMid(arr1,m/2,m,arr2,0,n/2+1)
else
searchMid(arr1,0,m/2+1,arr2,n/2,n)
}
3、实现
呵呵,懒得写,以后再说
此文链接:https://blog.youkuaiyun.com/csdn_chenche/article/details/88586543
ps:优快云的评论功能 和 markdown支持 做的像个傻逼一样,mmp每次要我自己去typora里面编辑好了再导入文章,即便是只修改了一句话。