【LeetNode2-1-5】Median of two sorted arrays--C++源代码(VS2015)
2017-10-05 16:31
471 查看
#include <iostream>
#include <vector>
using namespace std;
/*
Median of two sorted arrays
*/
int min(int Num_A, int Num_B)
{
return Num_A > Num_B ? Num_B : Num_A;
}
double Find_Median(vector<int>::const_iterator iter_A, int Size_A, vector<int>::const_iterator iter_B, int Size_B, int median)
{
if (Size_A > Size_B)
return Find_Median(iter_B, Size_B, iter_A, Size_A, median);
if (0 == Size_A)
return *(iter_B + median - 1);
if (1 == median)
return min(*iter_A, *iter_B);
int Num_A = min(Size_A, median / 2);
int Num_B = median - Num_A;
if (*(iter_A + Num_A - 1) < *(iter_B + Num_B - 1))
return Find_Median(iter_A + Num_A, Size_A - Num_A, iter_B, Size_B, median - Num_A);
else if (*(iter_A + Num_A - 1) > *(iter_B + Num_B - 1))
return Find_Median(iter_A, Size_A, iter_B + Num_B, Size_B - Num_B, median - Num_B);
}
double Solution(const vector<int> &Vec_A, const vector<int> &Vec_B)
{
int Size_A = Vec_A.size();
int Size_B = Vec_B.size();
int Total = Size_A + Size_B;
if (0x1 & Total)
return Find_Median(Vec_A.begin(), Size_A, Vec_B.begin(), Size_B, (Total + 1) / 2);
else
return (Find_Median(Vec_A.begin(), Size_A, Vec_B.begin(), Size_B, Total / 2) + Find_Median(Vec_A.begin(), Size_A, Vec_B.begin(), Size_B, Total / 2 + 1)) / 2.0;
}
int main()
{
int arr_1[] = { 1,3,5,7,9 };
int arr_2[] = { 2,4,6,8,10 };
vector<int> vec_1(&arr_1[0], &arr_1[5]);
vector<int> vec_2(&arr_2[0], &arr_2[5]);
double median = Solution(vec_1,vec_2);
cout << "median of the two sorted arrays is " << median << endl;
system("pause");
return 0;
}
#include <vector>
using namespace std;
/*
Median of two sorted arrays
*/
int min(int Num_A, int Num_B)
{
return Num_A > Num_B ? Num_B : Num_A;
}
double Find_Median(vector<int>::const_iterator iter_A, int Size_A, vector<int>::const_iterator iter_B, int Size_B, int median)
{
if (Size_A > Size_B)
return Find_Median(iter_B, Size_B, iter_A, Size_A, median);
if (0 == Size_A)
return *(iter_B + median - 1);
if (1 == median)
return min(*iter_A, *iter_B);
int Num_A = min(Size_A, median / 2);
int Num_B = median - Num_A;
if (*(iter_A + Num_A - 1) < *(iter_B + Num_B - 1))
return Find_Median(iter_A + Num_A, Size_A - Num_A, iter_B, Size_B, median - Num_A);
else if (*(iter_A + Num_A - 1) > *(iter_B + Num_B - 1))
return Find_Median(iter_A, Size_A, iter_B + Num_B, Size_B - Num_B, median - Num_B);
}
double Solution(const vector<int> &Vec_A, const vector<int> &Vec_B)
{
int Size_A = Vec_A.size();
int Size_B = Vec_B.size();
int Total = Size_A + Size_B;
if (0x1 & Total)
return Find_Median(Vec_A.begin(), Size_A, Vec_B.begin(), Size_B, (Total + 1) / 2);
else
return (Find_Median(Vec_A.begin(), Size_A, Vec_B.begin(), Size_B, Total / 2) + Find_Median(Vec_A.begin(), Size_A, Vec_B.begin(), Size_B, Total / 2 + 1)) / 2.0;
}
int main()
{
int arr_1[] = { 1,3,5,7,9 };
int arr_2[] = { 2,4,6,8,10 };
vector<int> vec_1(&arr_1[0], &arr_1[5]);
vector<int> vec_2(&arr_2[0], &arr_2[5]);
double median = Solution(vec_1,vec_2);
cout << "median of the two sorted arrays is " << median << endl;
system("pause");
return 0;
}
相关文章推荐
- leetcode_c++:Median_of _two_sorted_arrays(004)
- [leetcode] median of two sorted arrays[C++ vector版本]
- c++-median-of-two-sorted-arrays
- LeetCode-4_MedianOfTwoSortedArrays-C++
- 【LeetNode2-1-1】Remove duplicates from sorted array I--C++源代码(VS2015)
- 【C++】 LeetCode 4. Median of Two Sorted Arrays
- 【LeetNode2-1-2】Remove duplicates from sorted array II--C++源代码(VS2015)
- LeetCode刷题(C++)——Median of Two Sorted Arrays(Hard)
- [4, Hard, C++] Median of Two Sorted Arrays
- 【LeetNode2-1-4】Search in rotated sorted array II--C++源代码(VS2015)
- LeetCode 4 : Median of Two Sorted Arrays ( C++ )
- LeetCode 4 — Median of Two Sorted Arrays (C++ Java Python)
- **Leetcode_median-of-two-sorted-arrays (c++ and python version)
- [c++]LeetCode Median of Two Sorted Arrays问题
- [Leetcode] #4 Median of Two Sorted Arrays
- [Leetcode]4. Median of Two Sorted Arrays @python
- LeetCode 004 Median of Two Sorted Arrays 二分 + 递归
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- [LeetCode P4] Median of Two Sorted Arrays 解法