zoukankan      html  css  js  c++  java
  • PAT 1029. Median

    尼玛,数组偶数个数的时候取中位数是取中间两者中的前者,还tmd一直再算平均,卧槽

    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <vector>
    
    using namespace std;
    
    int min(int a, int b) {
        return a<b? a:b;
    }
    
    int main() {
    
        int na, nb;
    
        scanf("%d", &na);
        vector<int> a(na);
        
        for (int i=0; i<na; i++) {
            scanf("%d", &a[i]);
        }
        
        scanf("%d", &nb);
        vector<int> b(nb);
        
        for (int i=0; i<nb; i++) {
            scanf("%d", &b[i]);
        }
    
        int ia = 0, ib = 0;
        
        int idx = 0;
        int mid = (na + nb) / 2;
        
        int mv = 0, mv2;
        while (ia < na && ib < nb && idx < mid) {
            if (a[ia] <= b[ib]) {
                mv = a[ia];
                ia++;
            } else {
                mv = b[ib];
                ib++;
            }
            idx++;
        }
    
        while (ia < na && idx < mid) {
            mv = a[ia];
            ia++;
            idx++;
        }
        
        while (ib < nb && idx < mid) {
            mv = b[ia];
            ib++;
            idx++;
        }
    
        if (ia < na && ib < nb) {
            mv2 = min(a[ia], b[ib]);
        } else if (ia < na) {
            mv2 = a[ia];
        } else if (ib < nb) {
            mv2 = b[ib];
        }
        
        if ((na + nb) & 1) {
            // odd
            cout<<mv2<<endl;
        } else {
            // even
            cout<<mv<<endl;
        }
    
        system("pause");
        return 0;
    }

     log(na+nb)算法见:http://www.cnblogs.com/lailailai/p/3982103.html

  • 相关阅读:
    关于git
    关于 素材,设计
    utiles
    sqlite
    蓝牙
    一个简单的Maven小案例
    【日志卡住不动】Registering current configuration as safe fallback point
    一分钟部署nacos
    生产日志文件太大NotePad++无法打开
    idea 安装 codota 插件
  • 原文地址:https://www.cnblogs.com/lailailai/p/4326192.html
Copyright © 2011-2022 走看看