4. 寻找两个正序数组的中位数
给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。
请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。
你可以假设 nums1 和 nums2 不会同时为空。
1.解题思路
题目要求时间复杂度为 O(log(m + n))。必然用到的是二分搜索算法。
而我的思路是:
从两个数组中找到将两数组合并后的新数组的中位数的位置。由于两个数组的长度已知,因此中位数下标也可以知道。两个指针,初始时分别指向两个数组的下标 0 的位置,每次将指向较小值的指针后移一位(如果一个指针已经到达数组末尾,则只需要移动另一个数组的指针),直到到达中位数的位置。
2.源码