我只好沿着這些線路的面試問題:交叉口兩個列表字符串
無序客戶給出兩個列表,返回兩個列表的交叉點的列表。即,返回出現在兩個列表中的客戶列表。
有些事情,我成立:
- 假設每個客戶都有一個唯一的名稱
- 如果名稱是兩個列表相同,這是同樣的客戶
- 的名稱是形式名字姓氏
- 沒有II's,Jr's,怪異人物等的詭計
我認爲問題的關鍵是要找到一種有效的算法/數據結構的使用,儘可能有效地做到這一點。
我的進度是這樣的:
到內存中- 讀一個列表,然後在同一時間讀取其他列表中的一個項目,以查看是否有匹配
- 按字母順序排列兩份名單,然後開始在查看每個項目是否出現在另一個列表中
- 將兩個列表放入有序列表中,然後使用較短的列表逐項檢查項目(這樣,一個列表有兩個項目,您只能檢查這兩個項目項目)
- 把一個列表放入一個散列,並檢查是否存在ke ys從另一個名單
面試官不停地問:「接下來呢?」,所以我假設我錯過了別的東西。
任何其他技巧有效地做到這一點?
請注意,這個問題是在Python中,我剛剛閱讀了大約sets
,這似乎儘可能有效地做到了這一點。任何想法sets
的數據結構/算法是什麼?
散列對於可能在O(n)中提供解決方案的問題會很有幫助。 –