CS面試問題(entry level) - 面試

Table of Contents

大家好,

今天phone interview某間大公司的小 entry level Software developer.
考到一個問題...想分享出來且尋求答案.

==
給數字 5, 5, 7, 12, 3, 5
如何找出並印出裡面是兩個和 sum = 10的數字組(pair)
他給的printpair 的 output是 55 55 73 55 (但是我後來想 應該有少給我37...)

==
我一開始沒有想法 但是時間壓力 就直接先給他直觀的做法

兩個for loop 檢查,
第一次迴圈 用10-5 = 5 去找數組裡其他的5 找到就印出
2nd 10 - 5 = 5 去找其他的5
3nd 10 - 7 = 3 去找其他的3
...

這樣他說可以, 但是希望能更好. 我想了想 想不太出來請他能提示
他說: 想想為何我剛剛問你比較 link list, binary tree, 和hash table.

我直覺是要用hashtable去找(他好像也認同我用hashtable)
但是他要我把hashtable的樣子跟他講 exactly 一點~
我就答不出來了...然後就byebye了...
==

煩請版友幫忙我這新手解答疑惑...
感謝!!

--

All Comments

Megan avatarMegan2011-07-31
我也有可能一開始就錯了 他只是順著我應答 @@
Megan avatarMegan2011-08-03
他沒少給你37,scan把10-X存在hashtable,再scan
Zenobia avatarZenobia2011-08-06
1. hashtable 2.空間限制的話, 看能不能sort,再兩頭找
Jack avatarJack2011-08-06
創一個table, 全部存-1
Yedda avatarYedda2011-08-08
然後讀入數字 填值 之類的... 邊輸入邊輸出 應該可以快