→ dryman:突然發現原始題目是exist i,j 而不是找全部的解... 05/10 00:47
@yhash{@y} = 0..$#y;
for $item (@x){
print "exist\n" if exists $yhash{$num-$item};
}
XDDDDD
超級有"語感"的!!
Perl是語言學家開發出來的程式語言用起來真的抄酷!
※ 編輯: dryman 來自: 220.136.185.230 (05/10 00:49)
→ yauhh:可是你找答案是要告知是在Y的第幾格. 05/10 00:52
→ yauhh:你用yhash隨便存一個值能有什麼用呢? 05/10 00:52
→ yauhh:總之,我認為你沒有找到少於O(m*n)的演算法,你只是把程式寫出 05/10 00:55
→ yauhh:來而已. 05/10 00:55
→ yauhh:你想想看,我在演算法觀點上寫第二段,你隨便說看不懂,那麼, 05/10 00:56
→ yauhh:你隨便丟出一段perl碼,誰有必要看得懂? 05/10 00:57
→ yauhh:我也可以說我把X包裝成new some(X),然後它找任何值以及由值 05/10 01:01
→ yauhh:找任何index全是O(1)...但那沒意義,這是在談演算法,不是程式 05/10 01:02
→ dryman:你真的懂hash是什麼嗎?... = = 05/10 01:02
→ yauhh:我懂啊,但你知不知道我沒在跟你談hash 05/10 01:03
→ dryman:經由hash function來確認是否有值本來就是O(1) 05/10 01:03
→ yauhh:我在跟你講的是,雖然你找得到值,但沒找到對應於值的index.. 05/10 01:04
→ dryman:我的key->arr val, value-> arr idx 05/10 01:04
→ yauhh:可是這問題沒有解決啊,又不是你hash弄完就把答案弄出來了 05/10 01:04
→ dryman:這樣就可以找到idx了啊 05/10 01:04
→ dryman:push @pair, [$xhash{$item},$yhash{$num-$hash}] 05/10 01:05
→ yauhh:對啊,問的就是這個啊 05/10 01:06
→ dryman:這不就是用$item及$num-$item當hash key來找arr idx 05/10 01:06
→ dryman:我最後面補充的,是因為原始題目是問i,j是否exists 05/10 01:07
→ dryman:所以可以寫得非常短...印出exist就好 05/10 01:07
→ yauhh:ok,下一個問題是,如果一個value對應到好幾個index,取這一堆 05/10 01:09
→ yauhh:也是O(1)? 05/10 01:09
→ dryman:噢,我的解法是假設X,Y的值都是unique 05/10 01:11
→ dryman:在個別陣列中不會有重複的值,這我的確沒考慮到 05/10 01:11
→ yauhh:那你不可以假設,題目並沒有假設這件事情. 05/10 01:12
→ dryman:不過用hash還是可以解:利用hash做出值不重複的陣列 05/10 01:13
→ dryman:同時記錄每個value的index(用hash of array) 05/10 01:13
→ dryman:做出不重複的陣列後再用本解法得出arr val,用hash of arr 05/10 01:14
→ dryman:反推idx 05/10 01:14
→ dryman:這樣的話就是some small value * O(n) 05/10 01:15
→ dryman:明早還有課,先不戰了XD 05/10 01:16
→ dryman:明天再來PO改版的城市 05/10 01:16