2016阿里实习笔试:乱序保序输出

thinking:

(1)每次选择输出的数字是当前序列中最小的,记该数字下标为 index,数字为a

(2)检查index 之后的最小数为b

(3)如果index之前有小于b且大于a的数字出现,说明这些数字是乱序的数字,要和a一行保序输出

code:

int output_in_order(vector<int> &unordered_sequence)
{
    int next_output = 1, got_output;

    priority_queue<int, vector<int>, greater<int> > pq;

    for (size_t i = 0; i < unordered_sequence.size(); i++)
    {
        pq.push(unordered_sequence[i]);

        if (pq.top() < next_output)
        {
            cout << "duplicated index or index <= 0 in the sequence" << endl;
            return -1;
        }

        got_output = 0;
        while (!pq.empty() && pq.top() == next_output)
        {
            if (got_output)
                cout << ", ";
            cout << next_output;
            next_output++;
            pq.pop();
            got_output = 1;
        }

        if (got_output)
            cout << endl;
    }

    if (pq.empty())
        return 0;

    cout << "missing some index in the sequence" << endl;

    return -2;
}
时间: 2024-08-14 17:08:01

2016阿里实习笔试:乱序保序输出的相关文章

2014.3.29阿里实习笔试

一.单选 1.假设一个主机ip为192.168.5.121,子网掩码为255.255.255.248,则该主机的网络号部分(包括子网号部分)为—— A.192.168.5.12   B 192.168.5.121   C 192.168.5.120   D 192.168.5.32 参考答案 C 2.64位系统上,定义的变量int*a[2][3]占据的——字节 A 4 B12  C 24 D 48 参考答案 D 3.Linux中使用df-h/home和du-sh/home所查看到的已使用的磁盘容

阿里巴巴 2015 实习笔试题 分布式系统中的RPC请求经常出现乱序的情况 写一个算法来将一个乱序的序列保序输出

分布式系统中的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. 为该算法设计并实现单元测试 貌似效率不是很高,有时间的时候改进下.

2015-4-2的阿里巴巴笔试题:乱序的序列保序输出(bit数组实现hash)

分布式系统中的RPC请求经常出现乱序的情况.写一个算法来将一个乱序的序列保序输出.例如,假设起始序号是1,对于(1, 2, 5, 8, 10, 4, 3, 6, 9, 7)这个序列,输出是:123, 4, 567, 8, 9, 10 上述例子中,3到来的时候会发现4,5已经在了.因此将已经满足顺序的整个序列(3, 4, 5)输出为一行. 1 #include<stdio.h> 2 3 int main() 4 { 5 int num ; 6 while(scanf("%d"

乱序序列保序输出

题目: http://blog.csdn.net/michael_kong_nju/article/details/44851495 这是一家互联网公司的笔试题,好像没有说保密协议,应该是可以公开的,我也来贡献一下自己的思路和代码. 分布式系统中的RPC请求经常出现乱序的情况. 写一个算法来将一个乱序的序列保序输出.例如,假设起始序号是1,对于(1, 2, 5, 8, 10, 4, 3, 6, 9, 7)这个序列,输出是: 1 2 3, 4, 5 6 7, 8, 9, 10 上述例子中,3到来的

scikit-learn: isotonic regression(保序回归,非常有意思,仅做知识点了解,但差点儿没用到过)

http://scikit-learn.org/stable/auto_examples/plot_isotonic_regression.html#example-plot-isotonic-regression-py 代码就不贴了,參考上面链接. 看代码,给人的直观感受类似于CART,具有分段回归的效果. 只是非常少见人用这种方法,还是推荐使用CART吧,只是了解一下思想罢了. .. 给个简单的样例: 问题描写叙述:给定一个无序数字序列y,通过改动每一个元素的值得到一个非递减序列 y' ,问

scikit-learn: isotonic regression(保序回归,很有意思,仅做知识点了解,但几乎没用到过)

http://scikit-learn.org/stable/auto_examples/plot_isotonic_regression.html#example-plot-isotonic-regression-py 代码就不贴了,参考上面链接. 看代码,给人的直观感受类似于CART,具有分段回归的效果.不过很少见人用这个方法,还是推荐使用CART吧,不过了解一下思想罢了... 给个简单的例子: 问题描述:给定一个无序数字序列y,通过修改每个元素的值得到一个非递减序列 y' ,问如何使y和

机器学习:保序回归(IsotonicRegression):一种可以使资源利用率最大化的算法

1.数学定义 保序回归是回归算法的一种,基本思想是:给定一个有限的实数集合,训练一个模型来最小化下列方程: 并且满足下列约束条件: 2.算法过程说明 从该序列的首元素往后观察,一旦出现乱序现象停止该轮观察,从该乱序元素开始逐个吸收元素组成一个序列,直到该序列所有元素的平均值小于或等于下一个待吸收的元素. 举例: 原始序列:<9, 10, 14> 结果序列:<9, 10, 14> 分析:从9往后观察,到最后的元素14都未发现乱序情况,不用处理. 原始序列:<9, 14, 10&

阿里巴巴面试题,rpc请求保序接收算法

分布式系统中的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. 为该算法设计并实现单元测试 #include <iostream>

Spark机器学习(3):保序回归算法

保序回归即给定了一个无序的数字序列,通过修改其中元素的值,得到一个非递减的数字序列,要求是使得误差(预测值和实际值差的平方)最小.比如在动物身上实验某种药物,使用了不同的剂量,按理说剂量越大,有效的比例就应该越高,但是如果发现了剂量大反而有效率降低了,这个时候就只有把无序的两个元素合并了,重新计算有效率,直到计算出来的有效率不大于比下一个元素的有效率. MLlib使用的是PAVA(Pool Adjacent Violators Algorithm)算法,并且是分布式的PAVA算法.首先在每个分区