【LeetNode2-1-5】Median of two sorted arrays--C++源代码(VS2015)
来源:互联网 发布:同花顺炒股交易软件 编辑:程序博客网 时间:2024/05/23 18:47
#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;
}
阅读全文
0 0
- 【LeetNode2-1-5】Median of two sorted arrays--C++源代码(VS2015)
- 004Median of Two Sorted Arrays (C)
- leetcode Median of Two Sorted Arrays (C)
- 4. Median of Two Sorted Arrays(C++)
- 2.1.5 Median of Two Sorted Arrays
- 2.1.5 Median of Two Sorted Arrays
- 5 leetcode - Median of Two Sorted Arrays
- 5: Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Median of two sorted arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- 一点一点学线程(三)线程池
- tensorflow 常见错误及解析
- #1956【NOIP2015模拟赛NO.9】vfk的地雷
- C语言的操作符
- IO Streams:字符流
- 【LeetNode2-1-5】Median of two sorted arrays--C++源代码(VS2015)
- 投资、投机、赌博、交易
- angular4实战(4)ngrx
- poj2187(凸包)
- ASP.NET增删改
- C++实现一个日期类
- 单例模式
- 测试系列-测试用例设计
- 【LeetNode2-1-6】Longest consecutive sequence--C++源代码(VS2015)