4. Median of Two Sorted Arrays

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4. Median of Two Sorted Arrays相关的知识,希望对你有一定的参考价值。

文章目录如下

(1)自己的思路

(2)自己的代码

(3)别人的思路

(4)别人的代码

(5)对比自己的不足之处

题目如下:

There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).

(1)自己的思路

a.因为nums1与nums2都是有序的,所以这里只需要按顺序将他们合并成一个有序的nums3即可

b.根据中位数的定义,即取中间位置的数即可,当数组个数为奇数时,只需要取出len/2位置的元素位置。如果数组个数为偶数,只需要取出(len/2)-1与len/2位置的位置元素的和的均值即可

c.该题最主要的是选择合并两个数组的策略,在自己的做法中,所用的时间应该为m+n

 

(2)自己的代码

class Solution {
public:
    double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {        
        int i = 0, j = 0;
        int lens1 = nums1.size(), lens2 = nums2.size();
        vector<int> nums3;

        while (i<lens1 || j<lens2)
        {
            //这里要注意for循环中条件判断的顺序
            for (;i<lens1&&(j == lens2 || nums1[i]<=nums2[j]); i++) 
                nums3.push_back(nums1[i]);

            for (;(j<lens2)&&(i == lens1 || nums1[i] > nums2[j]); j++) 
                nums3.push_back(nums2[j]);
                
        }
        //求中位数位置
        int midlens3 = nums3.size() / 2;

        if (nums3.size() == 0) 
            return 0;
        else if (nums3.size() == 1) 
            return (double)nums3[0];
        else if (nums3.size() % 2 == 0) 
            return (double(nums3[midlens3] + nums3[midlens3 - 1]) / 2);
        else return double(nums3[midlens3]);
    }
};

(3)别人的思路

 

暂时还没有找到合适的代码,请大家多多见谅……

(不过我觉得这次我自己写的就挺好的,哈哈哈哈哈)

 

以上是关于4. Median of Two Sorted Arrays的主要内容,如果未能解决你的问题,请参考以下文章

leetcode-4 Median of Two Sorted Arrays

4. Median of Two Sorted Arrays

Median of two Sorted Arrays

4. Median of Two Sorted Arrays (二分法;递归的结束条件)

4.Median of Two Sorted Arrays

#Leetcode# 4. Median of Two Sorted Arrays