注意一下可以通过i <= sumOfIndex进行一个剪枝
class Solution {
public String[] findRestaurant(String[] list1, String[] list2) {
Map<String, Integer> map = new HashMap<>();
int len1 = list1.length;
int len2 = list2.length;
for(int i = 0;i < len1;i ++) {
map.put(list1[i], i);
}
List<String> ans = new ArrayList<>();
int sumOfIndex = len1 + len2;
for(int i = 0;i < len2 && i <= sumOfIndex;i ++) {
int index = map.getOrDefault(list2[i], -1);
if(index != -1) {
if(i + index < sumOfIndex) {
ans = new ArrayList<>();
ans.add(list2[i]);
sumOfIndex = i + index;
} else if(i + index == sumOfIndex) {
ans.add(list2[i]);
}
}
}
return ans.toArray(new String[0]);
}
}