题目
类型:HashTable
解题思路
使用一个哈希表记录 list 1 中每个餐厅对应的索引下标,然后遍历 list 2,如果 list 2 中的餐厅存在于哈希表中,那么说明该餐厅是两人共同喜爱的,计算它的索引和。如果该索引和比最小索引和小,则清空结果,将该餐厅加入结果中,该索引和作为最小索引和;如果该索引和等于最小索引和,则直接将该餐厅加入结果中。
代码
class Solution {public String[] findRestaurant(String[] list1, String[] list2) {Map<String, Integer> index = new HashMap<String, Integer>();for (int i = 0; i < list1.length; i++) {index.put(list1[i], i);}List<String> ret = new ArrayList<String>();int indexSum = Integer.MAX_VALUE;for (int i = 0; i < list2.length; i++) {if (index.containsKey(list2[i])) {int j = index.get(list2[i]);if (i + j < indexSum) {ret.clear();ret.add(list2[i]);indexSum = i + j;} else if (i + j == indexSum) {ret.add(list2[i]);}}}return ret.toArray(new String[ret.size()]);}}
