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

  • 相关阅读:
    类的加载
    java经典面试题(转)
    I/O NIO 2
    【转】Impala和Hive的关系
    【转】工作站和服务器的区别
    JAVA之线程
    【转】Linux中vim的粘贴复制快捷键的使用
    【转】Zookeeper集群为什么要是单数
    【转】Impala常见错误
    hadoop命令工作常用
  • 原文地址:https://www.cnblogs.com/lailailai/p/4326192.html
Copyright © 2011-2022 走看看