写一个算法讲一个乱序的序列保序输出。例如,假设起始序号是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;
- }