• 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)别人的思路

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

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

  • 相关阅读:
    mysql pt-osc
    mysql表分区,mysql分区表
    mysql5.5无法启动,Can't open and lock privilege tables: Table 'mysql.host' doesn't exist 问题的解决方法
    mysql压缩表,mysql行压缩与页压缩
    mybase7破解
    (1.5)es集群部署运维【最佳实践】
    kafka基础概念
    midway日志体系
    midwayjs 使用egg-mysql
    midway mysql egg-mysql 配置 基础操作 增删改查
  • 原文地址:https://www.cnblogs.com/magicy/p/5323016.html
Copyright © 2020-2023  润新知