Given two sorted arrays nums1 and nums2 of size m and n respectively, return the median of the two sorted arrays.
The overall run time complexity should be O(log (m+n)).
Example 1:
Input: nums1 = [1,3], nums2 = [2] Output: 2.00000 Explanation: merged array = [1,2,3] and median is 2.
Example 2:
Input: nums1 = [1,2], nums2 = [3,4] Output: 2.50000 Explanation: merged array = [1,2,3,4] and median is (2 + 3) / 2 = 2.5.
Example 3:
Input: nums1 = [0,0], nums2 = [0,0] Output: 0.00000
Example 4:
Input: nums1 = [], nums2 = [1] Output: 1.00000
Example 5:
Input: nums1 = [2], nums2 = [] Output: 2.00000
Constraints:
- nums1.length == m
- nums2.length == n
- 0 <= m <= 1000
- 0 <= n <= 1000
- 1 <= m + n <= 2000
- -106 <= nums1[i], nums2[i] <= 106
class Solution {
public:
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
double ans = 0;
int sumSize = nums1.size() + nums2.size();
int mid = floor(sumSize / 2);
int curMin = 1000, preMin = -1;
for (int i = 0; i < sumSize; i++)
{
preMin = curMin;
if (nums1.size() > 0 && nums2.size() > 0)
{
if (nums1[0] < nums2[0])
{
curMin = nums1[0];
nums1.erase(nums1.begin());
}
else
{
curMin = nums2[0];
nums2.erase(nums2.begin());
}
}
else
{
if (nums1.size() > 0)
{
curMin = nums1[0];
nums1.erase(nums1.begin());
}
else
{
curMin = nums2[0];
nums2.erase(nums2.begin());
}
}
if (i == mid)
{
ans = (double)curMin;
if (sumSize % 2 == 0)
{
ans = (ans + (double)preMin) / 2;
}
break;
}
}
return ans;
}
};
'Challenge' 카테고리의 다른 글
Check for pair with a given sum (0) | 2021.09.13 |
---|---|
[LeetCode] Longest Palindromic Substring (0) | 2021.09.12 |
[LeetCode] Longest Substring Without Repeating Characters (0) | 2021.09.11 |
[LeetCode] Add Two Numbers (0) | 2021.09.02 |
[LeetCode] Two Sum (0) | 2021.08.31 |