5.24——4. 寻找两个正序数组的中位数(不满足题目要求的解法)

4. 寻找两个正序数组的中位数

给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。
请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。
你可以假设 nums1 和 nums2 不会同时为空。

1.解题思路

题目要求时间复杂度为 O(log(m + n))。必然用到的是二分搜索算法。

而我的思路是:

  从两个数组中找到将两数组合并后的新数组的中位数的位置。由于两个数组的长度已知,因此中位数下标也可以知道两个指针,初始时分别指向两个数组的下标 0 的位置,每次将指向较小值的指针后移一位(如果一个指针已经到达数组末尾,则只需要移动另一个数组的指针),直到到达中位数的位置。

2.源码

猜你喜欢

转载自www.cnblogs.com/xiaoqichaoren/p/12951971.html