2018携程校招笔试第二道编程题

题目看错,一直以为是题目出错,没有仔细看样例,我简直就是傻逼啊啊啊啊,重复的数字不能重复出现。。最后几分钟没改回来,怪自己傻,脑子转的慢,敲代码也慢。

以下代码是后来5分钟改完的,不一定正确。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<set>
#include<stack>
#include<cctype>
#include<algorithm>
#include<vector>
#define M 1002
using namespace std;

int a[10000],b[10000],c[10000];

int main() {
    double ans;
    int i,j,n,m;
    

    memset(a,0,sizeof(a));
    memset(b,0,sizeof(b));
    memset(c,0,sizeof(c));
    
    
    cin>>n;
    for(i=0;i<n;++i){
        cin>>a[i];
    }
    cin>>m;
    for(i=0;i<m;++i){
        cin>>b[i];
    }
    
    
    int mid=0;
    int cc=0;
    i=j=0;
    while(cc<n+m){
        if(i>=n){
            if(j>=m)
                break;
            c[cc++]=b[j++];
        }else if(j>=m){
            if(i>=n)
                break;
            c[cc++]=a[i++];
        }else{
            if(a[i]>b[j]){
                c[cc++]=b[j++];
            }else if(a[i]==b[j]){
                c[cc++]=a[i++];
                ++j;
            }else{
                c[cc++]=a[i++];
            }            
        }
    }
//    cout<<cc<<endl;
    if(cc%2==0){
        ans=1.0*(c[cc/2-1]+c[cc/2])/2;
    }else{
        ans=c[cc/2];
    }
    
    cout<<ans<<endl;
    
    return 0;

}
原文地址:https://www.cnblogs.com/Traveller-Leon/p/7571384.html