所以我知道流的基础知识如何工作。基本上我可以在Java中实现像这样练习面试,排序无限字符流
inputStream = new FileReader("infinite.txt"); // or socket, whatever
int c;
while ((c = inputStream.read()) != -1) {
//something here
}
但是,这更是一个理论问题,少一个编码问题。面试官在问这个问题时寻找什么?我的意思是我可以使用一个ArrayList,每当一个字符串进入时使用.append,然后运行一个函数来对它进行排序....每次我追加后,你都不能说永远都不会结束,所以如果你做完所有事情之后在ArrayList中。
我在寻找聪明的解决方案,这是一个练习面试问题。
散列表,树?
编辑:在牢记哈希表/树通常有一个更好的运行时那么一个普通的阵列上的排序
由于一吨!
跳进我脑海里的第一件事就是询问他们有什么其他限制。他们关心恒定时间的随机访问吗?我的意见有哪些限制?如果我正在排序长随机的“字符串”,我的回答不同于如果我正在排序高度受限的集合(pi的数字,书中的字母或其他任何只有很少的桶的字母)。 – azurefrog 2014-10-30 21:52:41
问题是什么? “排序无限的字符流”不是一个问题,“//这里的某些东西”并没有太多说明你希望完成什么。如果流实际上是无限的,那么while循环将永远不会终止。在这种情况下,这个例子至少需要一个其他线程来表示任何东西。 – 2014-10-30 21:52:44