看板 Prob_Solve 關於我們 聯絡資訊
※ 引述《RockLee (Now of all times)》之銘言: : ※ 引述《Leon (Achilles)》之銘言: : : Sorry, I can't understand your writing. : : Also, the link seems to be wrong... : : Can you describe it, step by step. : : For example, there are only 3 words, (a,b,c) : : how are you going to find the window, for the document : : [b b a c b b b b c b b a] ? : 雖然 pseudo code 可能比較短, : 但由於 interview Google 時必需寫 actual code, : 所以我想還是直接用實際的 Java code 表達我的想法. : (我假設 window 長度指的是包含的字數, 與每個字的長度無關) : 以 Leon 大給的例子: : document: b b a c b b b b c b b a : index: 0 1 2 3 4 5 6 7 8 9 10 11 : occurence a: 2, 11 : occurence b: 0, 1, 4, 5, 6, 7, 9, 10 : occurence c: 3, 8 : 執行過程及結果會是: : windowBegin = 0; windowEnd = 3 : windowBegin = 1; windowEnd = 3 : windowBegin = 2; windowEnd = 4 : windowBegin = 3; windowEnd = 11 : windowBegin = 4; windowEnd = 11 : windowBegin = 5; windowEnd = 11 : windowBegin = 6; windowEnd = 11 : windowBegin = 7; windowEnd = 11 : windowBegin = 8; windowEnd = 11 : bestBegin = 1 : bestEnd = 3 : ----------------------------------------------- 我的ㄧ些習慣: (大家互相參考一下) 先確定演算法是對的, 作出 complexity, 再用 Pseudo code 寫好 確定結構 ( main program, and possible data structure) 再寫 Code. 我不用 Java, 所以我只是很快的掃過你的 code 再你的 Program 中, 你決定了 window start 之後用 occurance index 去找 window ending ? 依照我的理解, starting point has N possibility, and you have K different words. Thus, the computational complexity should be O(N* K), Not the O(N* lg(K)) you claim before? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 128.125.20.198
seanwu:找出對應當前start的ending是O(logK),他在移除start換下 03/06 04:41
seanwu:一個start時,補上目前start的list中下一個index 03/06 04:42
seanwu:是必要而且保證是合法的window,TreeMap中總是有K個index 03/06 04:43
seanwu:找ending只是找出max index而已 03/06 04:44
Leon:我看不懂你寫甚麼 03/07 13:38