N
(Leet Code c++)Median of Two Sorted Arrays 본문
4. Median of Two Sorted Arrays
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
주어진 두 배열 안에 있는 숫자를 한 배열 안에 넣어서 오름차순으로 정렬한다.
정렬된 배열의 크기가 홀수인지, 짝수인지에 따라 답을 다르게 리턴한다.
홀수인 경우, 배열의 정 가운데 숫자를 리턴한다.
짝수인 경우, 배열의 가운데 숫자 2개를 더한 값 / 2 를 리턴한다.
class Solution {
public:
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
vector<bool> check(2000001, false);
vector<double> nums;
for(int i = 0; i < nums1.size(); i++){
nums.push_back(nums1[i]);
}
for(int i = 0; i < nums2.size(); i++){
nums.push_back(nums2[i]);
}
sort(nums.begin(), nums.end());
if(nums.size() % 2){
return nums[nums.size() / 2];
}
else{
return (nums[nums.size() / 2] + (nums[(nums.size() / 2) - 1])) / 2;
}
}
};
'Leet Code 알고리즘' 카테고리의 다른 글
(Leet Code c++)Reverse Integer (0) | 2021.07.05 |
---|---|
(Leet Code c++)Longest Palindromic Substring (0) | 2021.07.05 |
(Leet Code c++)Longest Substring Without Repeating Characters (0) | 2021.07.01 |
(Leet Code c++)Add Two Numbers (0) | 2021.07.01 |
(Leet Code c++)Two Sum (0) | 2021.06.30 |