所以我知道流的基礎知識如何工作。基本上我可以在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