首页 > 其他分享 >中位数

中位数

时间:2023-03-27 21:46:11浏览次数:31  
标签:二分 int 中位数 插入 小根堆 排序

 

 这道题目因为n是1e5级别的所以输入一次再排序一次不现实,辣么有两个东西可以写这道题目,1小根堆(免去排序时间),2二分插入,由于小根堆太难写了所以采用第二种方法,简简单单~

#include <bits/stdc++.h>
using namespace std;
int n;
vector<int > a;
int main()
{
    ios::sync_with_stdio(false);
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        int x;
        cin>>x;
        a.insert(upper_bound(a.begin(),a.end(),x),x);//二分插入保证单调性,方便后面继续二分插入 
        if(i%2==1)  printf("%d\n",a[(i-1)/2]);//是奇数个就输出
    }
    return 0;
}

 

标签:二分,int,中位数,插入,小根堆,排序
From: https://www.cnblogs.com/wjk53233/p/17263081.html

相关文章

  • 力扣569(MySQL)-员工薪水中位数(困难)
    题目: 写一个SQL查询,找出每个公司的工资中位数,以任意顺序返回结果表。查询结果个数如下所示。  输出结果如下: 解题思路:中位数:位于集合正中间的元素。当数据总书......
  • Leetcode 4. 寻找两个正序数组的中位数(二分)
    题目链接在这里:是一道很好的二分题,一开始没有想到越界怎么处理,忽略了(m+n)/2一定介于min(n,m)和max(n,m)之间,因此如果确定在短的数组上进行二分就不用考虑越界问题了,其次......
  • 力扣---2488. 统计中位数为 K 的子数组
    给你一个长度为n的数组nums,该数组由从1到n的不同整数组成。另给你一个正整数k。统计并返回nums中的中位数等于k的非空子数组的数目。注意:   数组的......
  • 算法 -- 寻找两个正序数组的中位数(二分查找)
    原题:给定两个大小分别为m和n的正序(从小到大)数组nums1和nums2。请你找出并返回这两个正序数组的中位数。算法的时间复杂度应该为O(log(m+n))。示例1:输入:nu......
  • 寻找两个正序数组的中位数
    寻找两个正序数组的中位数 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。算法的时......
  • 环形链表(哈希表、链表)、寻找两个正序数组的中位数(数组、二分查找)、二进制求和(位
    环形链表(哈希表、链表)给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,我们使用整......
  • 【二分查找】LeetCode 4. 寻找两个正序数组的中位数
    题目链接4.寻找两个正序数组的中位数思路分治代码classSolution{publicdoublefindMedianSortedArrays(int[]nums1,int[]nums2){if(nums1.len......
  • P1168 中位数
    动态查询区间中位数  对顶堆,上面一个大根堆,下面小根堆,因此数值从上到下递增 不断交换堆顶的元素,使得abs(sz1-sz2)<=1 #include<iostream>#include<algorithm>......
  • [LeetCode]4. 寻找两个正序数组的中位数
    给定两个大小分别为m和n的正序(从小到大)数组nums1和nums2。请你找出并返回这两个正序数组的中位数。算法的时间复杂度应该为O(log(m+n))。分别查找两个数组的......
  • 4. 寻找两个正序数组的中位数
    给定两个大小分别为m和n的正序(从小到大)数组 nums1和 nums2。请你找出并返回这两个正序数组的中位数。算法的时间复杂度应该为O(log(m+n))。 题解:采用了遍......