题目:一种消息接收并打印的结构设计:已知一个消息流会不断地吐出整数 1 ~ N,但不一定按照顺序吐出。如果上次打印的数为i,那么当 i + 1 出现时,请打印 i + 1 及其之后接收过的并且连续的所有数,直到 1 ~ N 全部接收并打印完,请设计这种接收并打印的结构。
例如:
消息流吐出 2,一种结构接收而不打印 2,因为 1 还没出现;
消息流吐出 1,一种结构接收 1,并且打印:1,2。
消息流吐出 4,一种结构接收而不打印 4,因为 3 还没出现。
消息流吐出 5,一种结构接收而不打印 5,因为 3还没出现。
消息流吐出 7,一种结构接收而不打印 7,因为 3 还没出现。
消息流吐出 3,一种结构接收 3,并且打印:3,4,5。
消息流吐出 9,一种结构接收而不打印 9,因为 6 还没出现。
消息流吐出 8,一种结构接收而不打印 8,因为 6 还没出现。
消息流吐出 6,一种结构接收 6,并且打印:6,7,8,9。
【要求】消息流最终会吐出全部的 1 ~ N,当然最终也会打印完所有的 1 ~ N,要求接收和打印 1 ~ N 的整个过程,时间复杂度为 O(N)。
分析: