题目:分布式系统中的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)输出。
-
#include
-
#include
-
#include
-
#include
-
using namespace std;
-
-
class Solution{
-
public:
-
static void printInOrder(vector<int> & num)
-
{
-
unordered_multiset<int> tmp ;
-
int needNum = 1;
-
for (auto iter = num.begin(); iter != num.end(); iter++)
-
{
-
if (*iter != needNum)
-
{
-
-
tmp.insert(*iter);
-
continue;
-
}
-
tmp.insert(*iter);
-
while (true)
-
{
-
auto tmpiter = tmp.find(needNum);
-
if (tmpiter == tmp.end())
-
break;
-
else
-
{
-
cout << *tmpiter<<" ";
-
needNum = *tmpiter+1;
-
tmp.erase(tmpiter);
-
}
-
}
-
cout << endl;
-
}
-
}
-
};
-
-
int
-
main()
-
{
-
vector<int> num = {11,10,9,8,7,6,5,4,3,2,1 };
-
//vector<int> num;
-
Solution::printInOrder(num);
-
system("pause");
-
return 0;
-
}
阅读(1185) | 评论(0) | 转发(0) |