写一个算法来将一个乱序的序列保输出
来源:互联网 发布:诺基亚java单机游戏 编辑:程序博客网 时间:2024/05/29 03:51
分布式系统中的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. 为该算法设计并实现单元测试基本思想是将每一行存入一个链表结点,data表示起始数据,len表示每行元素个数。貌似效率不是很高,有时间的时候改进下
1.void solve(vector<int> &data){ int start = 1; int len = data.size(); int i = 0; int k; vector<int>::iterator it; vector<int>::iterator be = data.begin(); while (i < len) { if (data[i] == start) { k = data[i]; cout << setw(5) << k; it = be + i; while (1){ k++; if (find(be, it, k) == it){ break; } else{ cout << setw(5) << k; } } cout << endl; start = k; } i++; }} 2.void solution(vector<int> &data){ int start = 1; int len = data.size(); int i = 0; bool flag = 0; map<int, int> mp; while (i < len) { mp[data[i]] = 1; while (mp[start] == 1) { flag = 1; cout << setw(5) << start; start++; } if (flag) { cout << endl; flag = 0; } i++; }}3.
struct ListNode {int data;int len;ListNode* next; }; void InsertNode(ListNode *&pHead, ListNode *pNode){ListNode * pTmp = NULL;if(pNode == NULL){cout << "pNode is NULL!" << endl;return;}if(pHead == NULL){pHead = pNode;}else{for(pTmp = pHead;pTmp->next != NULL; pTmp = pTmp->next);pTmp->next = pNode;}} void SortAndPrint(int a[], int n){ListNode *pHead = NULL;ListNode *temp = NULL; int i = 0;int data = 0;int dataLen = 0;while(i < n){int j = 0;int len = 0;int moreNum = a[i];int lessNum = a[i];//查找小于一个数的连续数出现次数 while(j < i){if(a[j] == lessNum-1){j = 0;lessNum--;continue;}j++; }//只有小于一个数的所有数均出现时才存数据if(lessNum == 1){j = 0;while(j < i){if(a[j] == moreNum+1){len++;moreNum++;j = 0;continue;}j++;}ListNode *p = (ListNode*)malloc(sizeof(ListNode));memset(p, 0, sizeof(ListNode));p->data = a[i];p->len = len;p->next = NULL;InsertNode(pHead, p);}i++;}//按顺序打印序列 for(temp=pHead; temp!=NULL; temp=temp->next){dataLen = temp->len;data = temp->data;while(dataLen){printf("%d,",data++);dataLen--;}printf("%d\n",data);}//释放资源 ListNode *prev = NULL;ListNode *curr = pHead;while(curr!=NULL){prev=curr;curr=curr->next;if(prev != NULL){free(prev);prev = NULL;}}}
0 0
- 写一个算法来将一个乱序的序列保输出
- 分布式系统中的RPC请求经常出现乱序的情况 写一个算法来将一个乱序的序列保序输出
- 阿里巴巴 2015 实习笔试题 分布式系统中的RPC请求经常出现乱序的情况 写一个算法来将一个乱序的序列保序输出
- 阿里巴巴 2015 实习笔试题 分布式系统中的RPC请求经常出现乱序的情况 写一个算法来将一个乱序的序列保序输出
- 乱序的序列保序输出
- 阿里笔试题,乱序序列的保序输出。
- 乱序序列保序输出
- 乱序序列保序输出
- Delphi洗牌算法 - 将一个数组随机乱序
- C语言 将一个整数的二进制序列分别输出
- 简化以下程序,将函数对象 divide_by 转换为一个函数,并将 for 循环替换为用一个标准的 C++ 算法来输出数据
- 一个将字符串中的单词倒序输出的算法
- 使用copy算法将一个文件中的写到标准输出中
- 在一个乱序的数组中找到最长的递增子序列
- 一个打字母游戏 写的很乱
- 给定一个数字序列,输出一个最长的子序列
- 判断一个序列 是不栈的输出判断一个序列
- 算法40(字符串的排列,给出一个函数来输出一个字符串的所有排列)
- Android事件分发机制学习笔记
- Java中的private、protected、public和default的区别
- 如何在一个cpp中调用另一个cpp中的类?
- iOS视图响应者链以及响应处理和传递过程
- Gson在Android开发中可能存在的陷阱
- 写一个算法来将一个乱序的序列保输出
- 基于Ubuntu-14.04系统-连接真机调试Android程序
- 如何随时随地退出Activity,在退出Activity的时候关闭之前的Activity,如何退出程序所有Activity
- input type="file" 选取文件路径时出现fakepath问题IE浏览器解决办法
- 1文件权限和用户组
- 进程间通信
- hdoj Asteroids! (BFS)
- deepID2
- Java 设计模式——原型模式(Prototype)