RPC乱序
来源:互联网 发布:闪电分期淘宝上怎么扫 编辑:程序博客网 时间:2024/05/17 07:35
题目
分布式系统中的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)输出为一行。
题目解答
代码实现
//设置标记数组,表示标记数字是否已经被遍历,如果被遍历了,还需等待它之前的数被遍历,才能打印 public static void printNum(int[] arr) { if(arr == null || arr.length == 0) return ; int len = arr.length; boolean[] visited = new boolean[len+1]; int flag = 0; int j = 1; for(int anArr : arr) { visited[anArr] = true; while(j < (len + 1) && visited[j]) { if (flag == 1) { System.out.print(","); } else { flag = 1; } System.out.print(j); j++; } if(flag == 1) { System.out.println(); flag = 0; } } } public static void main(String[] args) { int[] arr = {1, 2, 6, 8, 10, 4, 3, 5, 9, 7}; printNum(arr); }
解法二
/** [1, 2, 5, 8, 10, 4, 3, 6, 9, 7] 1,读到1,2,输出1,2。这时期望读到3。 2,读到的第一个不是3的数,记住下标start = 2。 3,终于读到3,记住下标end = 6。 4,对[start,end]范围内做一下快排,[3,4,5,8,10],输出3,4,5。这时将start改成8的下标 ,start = 5。 5,从end开始继续读,期望读到6。记住end = 7。对这个范围做快排,[6,8,10],输出6。改变start 为8的下标。 */ public static void printNum2(int[] arr) { if(arr == null || arr.length == 0) return ; int len = arr.length; int cur = 1; int start = 0; for(int i = 0; i < len; i++) { if(cur == arr[i]) { if(start == i) { System.out.println(cur); cur++; start++; }else { Arrays.sort(arr, start, i+1); int flag = 0; int k ; for(k = start; k <= i; k++) { if(cur != arr[k]) break; if(flag == 1) { System.out.print(","); }else { flag = 1; } System.out.print(cur); cur++; } start = k; System.out.println(); } } } }
0 0
- RPC乱序
- 阿里巴巴 2015 实习笔试题 分布式系统中的RPC请求经常出现乱序的情况
- 分布式系统中的RPC请求经常出现乱序的情况 写一个算法来将一个乱序的序列保序输出
- 乱序
- 阿里2015 实习笔试题笔记 分布式系统中的RPC请求经常出现乱序的情况
- 编译乱序和执行乱序
- 阿里巴巴 2015 实习笔试题 分布式系统中的RPC请求经常出现乱序的情况 写一个算法来将一个乱序的序列保序输出
- 阿里巴巴 2015 实习笔试题 分布式系统中的RPC请求经常出现乱序的情况 写一个算法来将一个乱序的序列保序输出
- List 乱序
- 乱序执行技术
- DCL 和 乱序
- 乱序执行技术
- 乱序算法
- java数组乱序
- 乱序执行技术
- 乱序执行
- mfc onsize() 乱序
- cpu乱序执行
- sql 日期 增加2个月
- [数据结构]Phone-Number Manager
- hdu 5631 Rikka with Graph(并查集)
- 基于dubbo框架下的RPC通讯协议性能测试
- 贝纳-斐波纳奇循环
- RPC乱序
- spark-shell和scala错误
- Android DownloadManager 的使用
- STL中string的基本用法范例
- 泛型type体系与反射
- ubuntu下安装rpm文件
- 多线程socket编程--聊天程序
- 1046 Shortest Distance
- 计算机验证