题解 | #多数组中位数#

多数组中位数

http://www.nowcoder.com/practice/b6bb0bce88894108bfc23e9b7b012420

题目的主要信息:

给定两个升序的数组 arr1 和 arr2 ,求两个数组合并后的下中位数

注意:下中位数指在两个数组的数个数在偶数时取更小的

方法一:

先合并两个数组,然后再对合并后的数组排序,计算中位数的位置,最后直接返回中位数。

具体做法:

class Solution {
public:
    int getUpMedian(vector<int>& arr1, vector<int>& arr2) {
        for(int i=0;i<arr2.size();i++){//合并
            arr1.push_back(arr2[i]);
        }
        sort(arr1.begin(),arr1.end());//排序
        int n=arr1.size();//中位数位置
        return arr1[n/2-1];//返回中位数
    }
};

复杂度分析:

  • 时间复杂度:O(nlog2n)O(nlog_2n),sort排序的时间复杂度为O(nlog2n)O(nlog_2n)
  • 空间复杂度:O(1)O(1),只用了常数空间。

方法二:

首先计算两个数组的中位数位置target,同时遍历两个数组,由于两个数组已经是升序排序的,所以每次我们两数相比取更小的,直到取到第target个数就结束循环。需要注意的是,如果在遍历过程中,有数组提前结束遍历,则在另一个数组中继续。 alt 具体做法:

class Solution {
public:
    int getUpMedian(vector<int>& arr1, vector<int>& arr2) {
        int i = 0;//遍历arr1
        int j = 0;//遍历arr2
        int count = 0;
        int res = 0;
        int target = (arr1.size()+arr2.size())/2;
        while(i < arr1.size() || j < arr2.size()) {//遍历两个数组
            if (count == target) {//如果找到第target个数则结束循环
                break;
            }
            if (i == arr1.size()) {//arr1遍历完了则在arr2数组中继续
                res = arr2[j++];
            } else if (j == arr2.size()) {//arr2遍历完了则在arr1数组中继续
                res = arr1[i++];
            } else {//两个数组都没有遍历完
                if (arr1[i] > arr2[j]) {//取其更小的数
                    res = arr2[j++];
                } else {
                    res = arr1[i++];
                }
            }
              
            count++;
        }
        return res;
    }
};

复杂度分析:

  • 时间复杂度:O(n)O(n),while循环遍历两个数组。
  • 空间复杂度:O(1)O(1),只用了常数空间,
全部评论

相关推荐

看到这个内容真是闹麻了。。。。。。现在有了AI以后很多人面试都会作弊吗?&nbsp;那对老老实实面试的人岂不是不公平....
程序员牛肉:公平那是对小孩子讲的童话故事,成年人的世界只有能不能接受失败的后果。 你要是能接受面试作弊被发现之后多家公司联合永久拉黑的后果,你就搞。
点赞 评论 收藏
分享
06-28 22:48
已编辑
广东金融学院 Java
小浪_Coding:学院本+这俩项目不是buff叠满了嘛
点赞 评论 收藏
分享
湫湫湫不会java:先投着吧,大概率找不到实习,没实习的时候再加个项目,然后把个人评价和荣誉奖项删了,赶紧成为八股战神吧,没实习没学历,秋招机会估计不多,把握机会。或者说秋招时间去冲实习,春招冲offer,但是压力会比较大
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-04 14:35
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务