Median of Two Sorted Arrays - LeetCode

题目链接

Median of Two Sorted Arrays - LeetCode

注意点

  • 要考虑数组长度不一致的情况

解法

解法一:将两个数组合并成一个有序数组,根据数组长度分奇偶情况求中位数。时间复杂度为O(m+n)

class Solution {
public:
    double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
        int i = 0;
        int j = 0;
        int nums1_len = nums1.size();
        int nums2_len = nums2.size();
        vector<int> nums;
        while(i <  nums1_len&& j < nums2_len)
        {
            if(nums1[i] < nums2[j])
            {
                nums.push_back(nums1[i]);
                i++;
            }
            else
            {
                nums.push_back(nums2[j]);
                j++;
            }
        }
        while(i < nums1_len)
        {
            nums.push_back(nums1[i]);
            i++;
        }
        while(j < nums2_len)
        {
            nums.push_back(nums2[j]);
            j++;
        }
        int temp = nums.size();
        for(int l = 0;l < temp;l++)
        {
            cout << nums[l];
        }
        if(temp%2==1)
        {
            return (nums[(temp-1)/2]);
        }
        else
        {
            return ((double)(nums[temp/2]+nums[temp/2-1])/2);
        }
    }
};

解法二:参考->leetcode之Median of Two Sorted Arrays问题

小结

  • 复杂度为O(m+n)的方法十分简单,但是O(log(m+n))就没那么容易了,只想到要用二分法,但是要在两个数组之间用二分法还是挺麻烦的,所以应该是要对数字二分。并且求中位数转为求第K大的数字。
posted @ 2019-01-20 14:08  闽A2436  阅读(104)  评论(0编辑  收藏  举报