-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFindRestaurant.java
More file actions
55 lines (51 loc) · 2.01 KB
/
Copy pathFindRestaurant.java
File metadata and controls
55 lines (51 loc) · 2.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
//599. Minimum Index Sum of Two Lists
//
//Suppose Andy and Doris want to choose a restaurant for dinner, and they both have a list of favorite restaurants represented by strings.
//
//You need to help them find out their common interest with the least list index sum. If there is a choice tie between answers, output all of them with no order requirement. You could assume there always exists an answer.
//
//
//
//Example 1:
//
//Input: list1 = ["Shogun","Tapioca Express","Burger King","KFC"], list2 = ["Piatti","The Grill at Torrey Pines","Hungry Hunter Steakhouse","Shogun"]
//Output: ["Shogun"]
//Explanation: The only restaurant they both like is "Shogun".
//Example 2:
//
//Input: list1 = ["Shogun","Tapioca Express","Burger King","KFC"], list2 = ["KFC","Shogun","Burger King"]
//Output: ["Shogun"]
//Explanation: The restaurant they both like and have the least index sum is "Shogun" with index sum 1 (0+1).
//
//
//Constraints:
//
//1 <= list1.length, list2.length <= 1000
//1 <= list1[i].length, list2[i].length <= 30
//list1[i] and list2[i] consist of spaces ' ' and English letters.
//All the stings of list1 are unique.
//All the stings of list2 are unique.
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class FindRestaurant {
public String[] findRestaurant(String[] list1, String[] list2) {
HashMap<String, Integer> map = new HashMap <String, Integer> ();
for (int i = 0; i < list1.length; i++)
map.put(list1[i], i);
List<String> com = new ArrayList<>();
int minSum = Integer.MAX_VALUE, sum;
for (int j = 0; j < list2.length && j <= minSum; j++) {
if (map.containsKey(list2[j])) {
sum = j + map.get(list2[j]);
if (sum < minSum) {
com.clear();
com.add(list2[j]);
minSum = sum;
} else if (sum == minSum)
com.add(list2[j]);
}
}
return com.toArray(new String[com.size()]);
}
}