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

+ Recent posts