1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/*
There are two sorted arrays nums1 and nums2 of size m and n respectively.
Find the median of the two sorted arrays.
The overall run time complexity should be O(log (m+n)).

Example 1:
nums1 = [1, 3]
nums2 = [2]
The median is 2.0

Example 2:
nums1 = [1, 2]
nums2 = [3, 4]
The median is (2 + 3)/2 = 2.5
*/

#include <iostream>
#include <vector>

using namespace std;

class Solution
{
public:
/*arg1 and arg2 are sorted.*/
static double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2)
{
double ret = 0.0;
auto nums1Length = nums1.size();
auto nums2Length = nums2.size();

double median1 = (nums1Length % 2 != 0) ?
nums1[nums1Length / 2] :
((nums1[nums1Length / 2] + nums1[nums1Length / 2 -1])/2.0)
;
double median2 = (nums2Length % 2 != 0) ?
nums2[nums2Length / 2] :
((nums2[nums2Length / 2] + nums2[nums2Length / 2 -1])/2.0)
;

ret = (median2 + median1) / 2.0;

return ret;
}
};

int main()
{
vector<int> nums1 = {1,2};
vector<int> nums2 = {3,4};
auto ret = Solution::findMedianSortedArrays(nums1,nums2);
cout << ret << endl;

return 0;
}