Intersection of Two Arrays
Given two arrays, write a function to compute their intersection.
###For Example:
|
|
Note:
- Each element in the result must be unique.
- The result can be in any order.
提示 | 解題應用 |
---|---|
HashTable | HashMap |
Default:
|
|
解答思路:
這次只是要找兩陣列有交集的部分,也就是說只要回傳兩陣列共同都有的值且不能重複,而最簡單的做法就是用hashmap來完成,只要其中一個陣列先存入hashmap,另一個只要核對就可以了,而先存入的那一個就算裡面有重覆也只是將key&value做覆蓋,並不會再新增一個,而這邊我們key就放陣列的值,value則是放boolean值在核對完後,用來確認是否已將此數放入結果之中,如果已經有放入了就不需要再放一次以避免重覆。
程式碼解說:
一開始先為結果初始化一空陣列及一個儲存的hashmap,而第一個迴圈就是遍歷第一個陣列並一一放入hashmap中,key值為元素值,而value則為false(此時尚未放入結果之中),而就算陣列有值重覆,在hashamp之中也只是做覆蓋,而第二個迴圈開始遍歷第二個陣列核對其元素是否存在,如果存在表示該元素為兩陣列的交集之一,再來則是確認value(already)是否未放入結果之中,如果也尚未放入結果就可以安心將其值加入,並將該value值改成true,最後再第二個陣列核對完畢後回傳結果。
|
|
完整程式碼:
|
|
總結:
要尋找兩陣列的交集且回傳時不可包含重覆的元素,此時先用hashmap來儲存第一個陣列,key值為該陣列的元素,而value則是boolean值,value為當另一陣列除了要確認元素是否存在,還必需要知道此元素是否己經放入結果之中以避免重覆。