Andy와 Doris가 저녁식사를 위해 식당을 선택하기를 원하는데 둘 다 문자열로 대표되는 좋아하는 식당 목록을 가지고 있다고 가정해보자.
당신은 최소한의 리스트 인덱스 합으로 그들이 공통 관심사를 찾을 수 있도록 도와야 합니다. 답변 사이에 선택 항목이 있는 경우 순서 없이 모두 출력합니다. 항상 답이 있다고 가정할 수 있습니다.
https://leetcode.com/problems/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).
자바입니다.
class Solution {
public String[] findRestaurant(String[] list1, String[] list2) {
HashMap<String, Integer> map = new HashMap<>();
ArrayList<String> list = new ArrayList<>();
for(int i=0;i<list1.length;i++) map.put(list1[i],i);
int min=Integer.MAX_VALUE;
for(int i=0;i<list2.length;i++){
if(map.containsKey(list2[i])){
if(i+map.get(list2[i])<min){
min=i+map.get(list2[i]);
list.clear();
list.add(list2[i]);
}else if(i+map.get(list2[i])==min){
list.add(list2[i]);
}
}
}
return list.toArray(new String[list.size()]);
}
}