N

(Leet Code c++)Median of Two Sorted Arrays 본문

Leet Code 알고리즘

(Leet Code c++)Median of Two Sorted Arrays

naeunchan 2021. 7. 1. 10:17
728x90
반응형

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;
        }
    }
};
728x90
반응형