您的位置:首页 > 其它

阿里2015年4月实习生招聘研发岗笔试题——RPC题解

2015-04-17 08:52 330 查看
分布式系统中的RPC请求经常出现乱序的情况。

写一个算法来将一个乱序的序列保序输出。例如,假设起始序号是1,对于(1, 2, 5, 8, 10, 4, 3, 6, 9, 7)这个序列,输出是:

1

2

3, 4, 5

6

7, 8, 9, 10

上述例子中,3到来的时候会发现4,5已经在了。因此将已经满足顺序的整个序列(3, 4, 5)输出为一行。

要求:

1. 写一个高效的算法完成上述功能,实现要尽可能的健壮、易于维护

2. 为该算法设计并实现单元测试
void Insert(std::list<int> &Request,int val)
{
std::list<int>::iterator current = Request.begin();
while(current!=Request.end() && *current<val) {
++current;
}
Request.insert(current,val);
}

void Solution(std::istream &In)
{
std::list<int> Request;
int next = 1;
int val;
while(In>>val) {
if(val==next) {
std::cout << val << ' ';
++next;
while(!Request.empty() && Request.front()==next) {
std::cout << Request.front() << ' ';
Request.pop_front();
++next;
}
std::cout << std::endl;
} else {
Insert(Request,val);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: