题目
类型: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()]);
}
}