2016携程测试实习生笔试编程题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2016携程测试实习生笔试编程题相关的知识,希望对你有一定的参考价值。

 

四道大题:

第一道题,是携程网站有一个725*286(具体不记得了)广告区域,能想到的测试类型及方法。

写测试用例——2016年1月1日到2016年3月1日同一订单往返机票立减50 全部功能点。

第二道题,sql语句。(该学sql- -)

第三道题,编程题:

有N个球,M个颜色(M小于等于N),求要想从这N个球里拿出全部(M)个颜色的球,至少需要拿多少个。

思路:

我又是用map实现的,当map的size==M的时候,就说明颜色已经集齐了,计算一个minNum,然后继续扫描,更新minNum

感觉效率有点低,先粘上来代码,明天优化一下(集齐颜色后,判断是否一定需要更新minNum)

#include<iostream>
#include<map>
#include<vector>
using namespace std;

int CollectColor(vector<int> balls,int M){
    map<int,int> collect;
    int minNum=9999,mintemp=9999;
    for(int i=0;i<balls.size();i++){
        collect[balls[i]]=i;   //map记下每个颜色最近出现的位置
        if(collect.size()==M)  //集齐颜色就不再扫描了
        {    
            int maxIndex=0,minIndex=99999;
            for(auto j=collect.begin();j!=collect.end();j++){
                
                if((*j).second>maxIndex)
                    maxIndex=(*j).second;
                if((*j).second<minIndex)
                    minIndex=(*j).second;
                mintemp=maxIndex-minIndex+1;
            }
                if(mintemp<minNum)
                    minNum=mintemp;

        }
        
    }
    return minNum;
}

int main(){
    int array1[]={0,1,2,6,7,4,1,1,1,1,2,6,7,2,2,0};
    vector<int> v1(array1,array1+16);
    cout<<CollectColor(v1,6)<<endl;
    return 0;
}

 

以上是关于2016携程测试实习生笔试编程题的主要内容,如果未能解决你的问题,请参考以下文章

大数乘法——2016开发实习生腾讯模拟笔试编程题

腾讯2016实习生编程题 打印蛇形二维数组

腾讯实习笔试编程题 满二叉搜索树求三个节点的最低公共祖先

实习生求职今日头条笔试

携程开发笔试记录

携程2016研发工程师笔试