流利说笔试编程题

编程题:第一道题目如下,当时没写出来。    第二道,是跳台阶(非递归)比较简单




#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;

struct ComeGoTime    //用结构体为每个时间设置类型标记
{
    int time;
    bool type;   // 时间类型: true 为进站时间  false 为出站时间
    ComeGoTime(int tim,bool typ):time(tim),type(typ){}
};

bool cmp(ComeGoTime a,ComeGoTime b)
{
    return a.time<b.time;
}

vector<int> getNum(string str)  //由于输入没有 指定数据个数,所以以行字符串接受,再转换为数字
{
    vector<int> vec;
    if(str.length()<1)
        return vec;
    string::iterator first=str.begin();
    int num=0;
    int p=1;
    for(;first!=str.end();first++)
    {
        if(*first==' ')
        {
            vec.push_back(num);
            num=0;
            p=1;
        }
        else
        {
            num*=p;
            num+=(*first-'0');
            p=10;
        }
    }
    vec.push_back(num);  //放入最后一个数
    return vec;
}


int main()
{
    string come_str,go_str;
    getline(cin,come_str);
    getline(cin,go_str);

    vector<int> come_time,go_time;
    come_time=getNum(come_str);
    go_time=getNum(go_str);

    vector<ComeGoTime> vec;
    for(int i=0;i<come_time.size();i++)
    {
        ComeGoTime temp(come_time[i],true);
        vec.push_back(temp);
    }

    for(int i=0;i<go_time.size();i++)
    {
        ComeGoTime temp(go_time[i],false);
        vec.push_back(temp);
    }

    sort(vec.begin(),vec.end(),cmp);   //  遇到进站加一,遇到出站减一,统计最大站台数量即可
    
    int max_num=0;
    int num=0;
    for(int i=0;i<vec.size();i++)
    {
        if(vec[i].type==true)
            num++;
        else
            num--;
        max_num=max(max_num,num);
    }

    cout<<max_num<<endl;

    return 0;
}

这是之后写的代码,样例过了,自己测了几组数据,通过。欢迎大家 的特殊数据的 检测
#笔试题目##流利说#
全部评论
点赞 回复 分享
发布于 2019-08-20 15:45
请问 这是什么岗位呢 谢谢
点赞 回复 分享
发布于 2019-08-21 15:12

相关推荐

05-12 16:04
已编辑
江西财经大学 Java
点赞 评论 收藏
分享
评论
2
14
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务