/***************************************************************************
**description:两个有序数组A、B,长度分别为m、n,找到两个数组的第k个值并返回
** 要求总的时间复杂度为O(log(m+n))
***************************************************************************/
#include<iostream>
#include<vector>
using namespace std;
//方法一:按照merge的思想找第k个数据,但merge过程中把重复元素也算在内
//时间复杂度O(m+n),空间复杂度O(1)
int findKthOfTwoSortedArrays_1(const vector<int> &arr1, const vector<int> &arr2, int k)
{
int index = 0;
int i = 0;
int j = 0;
while (i < arr1.size() || j < arr2.size())
{
if (arr1[i] <= arr2[j] || j == arr2.size())
{
index++;
if (k == index)
return arr1[i];
i++;
}
else if (arr1[i] > arr2[j] || i == arr1.size())
{
index++;
if (k &
两个有序数组A、B,长度分别为m、n,找到两个数组的第k个值并返回
最新推荐文章于 2022-10-23 13:12:55 发布