[LeetCode] 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:
["Shogun", "Tapioca Express", "Burger King", "KFC"]
["Piatti", "The Grill at Torrey Pines", "Hungry Hunter Steakhouse", "Shogun"]
Output: ["Shogun"]
Explanation: The only restaurant they both like is "Shogun".

Example 2:

Input:
["Shogun", "Tapioca Express", "Burger King", "KFC"]
["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).

Note:

  1. The length of both lists will be in the range of [1, 1000].
  2. The length of strings in both lists will be in the range of [1, 30].
  3. The index is starting from 0 to the list length minus 1.
  4. No duplicates in both lists.

题目要求两个字符串数组中是否含相同的字符串,如果有多个相同的,则需要把索引和最小的字符串放入结果字符串数组中。首先使用map存储list1中字符串及其对应的索引,构成查找表。然后在list2中寻找map中的元素。把索引和小的放去结果字符串数组中,如果出现索引和相同的字符串则继续添加到结果字符串数组中,如果出现索引和更小的字符串,则将结果字符串数组清空后加入该字符串。

class Solution {
public:
    vector<string> findRestaurant(vector<string>& list1, vector<string>& list2) {
        vector<string> res;
        unordered_map<string, int> m;
        int sum = 0, tmp = INT_MAX;
        for (int i = 0; i != list1.size(); i++)
            m[list1[i]] = i;
        for (int j = 0; j != list2.size(); j++) {
            if (m.count(list2[j])) {
                sum = m[list2[j]] + j;
                if (sum == tmp)
                    res.push_back(list2[j]);
                else if (sum < tmp) {
                    tmp = sum;
                    res.clear();
                    res.push_back(list2[j]);
                }
            }
        }
        return res;
        
    }
};
// 89 ms

 

posted @ 2017-07-13 17:20  immjc  阅读(315)  评论(0编辑  收藏  举报