0599. Minimum Index Sum of Two Lists

0599. Minimum Index Sum of Two Lists #

题目 #

  • 假设 Andy 和 Doris 想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示。
  • 你需要帮助他们用最少的索引和找出他们共同喜爱的餐厅。 如果答案不止一个,则输出所有答案并且不考虑顺序。 你可以假设答案总是存在。

思路 #

模拟 #

代码 #

模拟 #

class Solution {
    public String[] findRestaurant(String[] list1, String[] list2) {
        int indexSum = Integer.MAX_VALUE;
        List<String> ans = new LinkedList<>();

        Map<String, Integer> map = new HashMap<>();
        for (int i = 0; i < list1.length; i++) map.put(list1[i], i);

        for (int i = 0; i < list2.length; i++) {
            String restaurant = list2[i];

            if (map.containsKey(restaurant)) {
                int sum = i + map.get(restaurant);
                if (sum == indexSum) ans.add(restaurant);
                else if (sum < indexSum) {
                    indexSum = sum;
                    ans = new LinkedList<>();
                    ans.add(restaurant);
                }
            }
        }

        return ans.toArray(new String[ans.size()]);
    }
}