Title:Minimum Index Sum of Two Lists 599
Difficulty:Easy
原题leetcode地址: https://leetcode.com/problems/minimum-index-sum-of-two-lists/
1. map存储位置,再求最小值
时间复杂度:O(n),三次一层循环。
空间复杂度:O(n),申请Map、List。
/**
* map存储,然后求最小值
* 题目意思:两个数组,寻找元素相同的并且下标相加最小的元素,如果有多个,则返回多个,两个数组各自没有重复元素
* @param list1
* @param list2
* @return
*/
public static String[] findRestaurant(String[] list1, String[] list2) {
Map<String, Integer> map1 = new HashMap<>();
Map<String, Integer> map2 = new HashMap<>();
List<String> l = null;
int min = Integer.MAX_VALUE;
for (int i = 0; i < list1.length; i++) {
map1.put(list1[i], i);
}
for (int i = 0; i < list2.length; i++) {
map2.put(list2[i], i);
}
for (int i = 0; i < list1.length; i++) {
if (map2.containsKey(list1[i])) {
int sum = map1.get(list1[i]) + map2.get(list1[i]);
if (sum < min) {
min = sum;
l = new ArrayList<>();
l.add(list1[i]);
}
else if (sum == min) {
l.add(list1[i]);
}
}
}
if (l != null) {
return l.toArray(new String[l.size()]);
}
else {
return new String[]{};
}
}